diff --git a/.gitattributes b/.gitattributes index 9f1ce2646..73bf98eb0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ package-lock.json linguist-generated=true **/package-lock.json linguist-generated=true +src/public/app/doc_notes/en/User[[:space:]]Guide/** linguist-generated=true libraries/** linguist-vendored \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/!!!meta.json b/src/public/app/doc_notes/en/User Guide/!!!meta.json new file mode 100644 index 000000000..526ad8776 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/!!!meta.json @@ -0,0 +1,7775 @@ +{ + "formatVersion": 2, + "appVersion": "0.92.3-beta", + "files": [ + { + "isClone": false, + "noteId": "pOsGYCXsbNQG", + "notePath": [ + "pOsGYCXsbNQG" + ], + "title": "User Guide", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "User Guide.html", + "attachments": [], + "dirFileName": "User Guide", + "children": [ + { + "isClone": false, + "noteId": "tC7s2alapj8V", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V" + ], + "title": "Advanced Usage", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-rocket", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Advanced Usage", + "children": [ + { + "isClone": false, + "noteId": "zEY4DaJG4YT5", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "zEY4DaJG4YT5" + ], + "title": "Attributes", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "p9kXRFAkwN4o", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "J5Ex1ZrMbyJ6", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "u3YFHC9tQlpm", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R9pX4DGra2Vt", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "47ZrP6FNuoG8", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 100 + }, + { + "type": "label", + "name": "shareAlias", + "value": "attributes", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Attributes.html", + "attachments": [ + { + "attachmentId": "P4eRVtGFoHh2", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Attributes_image.png" + }, + { + "attachmentId": "ZuUT0WgJVR2j", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Attributes_image.png" + } + ], + "dirFileName": "Attributes", + "children": [ + { + "isClone": false, + "noteId": "bwZpz2ajCEwO", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "zEY4DaJG4YT5", + "bwZpz2ajCEwO" + ], + "title": "Attribute Inheritance", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "attribute-inheritance", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Attribute Inheritance.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "OFXdgB2nNk1F", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "zEY4DaJG4YT5", + "OFXdgB2nNk1F" + ], + "title": "Promoted Attributes", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "imageLink", + "value": "rxH2Dm1jn6YT", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "promoted-attributes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Promoted Attributes.html", + "attachments": [ + { + "attachmentId": "4EcBRWF9iCk2", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Promoted Attributes_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "KC1HB96bqqHX", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "zEY4DaJG4YT5", + "KC1HB96bqqHX" + ], + "title": "Template", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYjQUYhpbUEW", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "imageLink", + "value": "Y8kzZ5MSZLCC", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "imageLink", + "value": "uuGrYX41lWN0", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "47ZrP6FNuoG8", + "isInheritable": false, + "position": 100 + }, + { + "type": "label", + "name": "shareAlias", + "value": "template", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Template.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "iRwzGnHPzonm", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "iRwzGnHPzonm" + ], + "title": "Relation Map", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BCkXAVs63Ttv", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "imageLink", + "value": "EH6qNioOHeyT", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "imageLink", + "value": "xeZPrfi77XPu", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "imageLink", + "value": "N98UhifxrVpZ", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "kBrnXNG3Hplm", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "relation-map", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Relation Map.html", + "attachments": [ + { + "attachmentId": "x92CIQzusTuc", + "title": "relation-map-dev-process-demo.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Relation Map_relation-map-.gif" + } + ] + }, + { + "isClone": false, + "noteId": "BCkXAVs63Ttv", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "BCkXAVs63Ttv" + ], + "title": "Note Map", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-map", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Note Map.html", + "attachments": [ + { + "attachmentId": "F48iB3BbITHb", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Note Map_image.png" + }, + { + "attachmentId": "scmGuoLQPj8C", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Note Map_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "R9pX4DGra2Vt", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "R9pX4DGra2Vt" + ], + "title": "Sharing", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "5GcxcE9fP9xX", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "Ky3qOJJMZ731", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "imageLink", + "value": "lCtZz2Z59wPT", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "imageLink", + "value": "jEQNvpyaXIWE", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Wy267RK4M69c", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "sharing", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-share-alt", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Sharing.html", + "attachments": [], + "dirFileName": "Sharing", + "children": [ + { + "isClone": false, + "noteId": "Qjt68inQ2bRj", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "R9pX4DGra2Vt", + "Qjt68inQ2bRj" + ], + "title": "Serving directly the content of a note", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Serving directly the content o.html", + "attachments": [ + { + "attachmentId": "eizmhhmocL6L", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Serving directly the conte.png" + }, + { + "attachmentId": "xicVjsf2Kmaz", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Serving directly the conte.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "6f9hih2hXXZk", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "6f9hih2hXXZk" + ], + "title": "Code Notes", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "code-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Code Notes.html", + "attachments": [ + { + "attachmentId": "hajUVeLs3EOM", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Code Notes_image.png" + }, + { + "attachmentId": "OTcapNOcNaBL", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Code Notes_image.png" + } + ], + "dirFileName": "Code Notes", + "children": [ + { + "isClone": false, + "noteId": "CdNpE2pqjmI6", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "6f9hih2hXXZk", + "CdNpE2pqjmI6" + ], + "title": "Scripts", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "5668rwcirq1t", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GPERMystNGTB", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "imageLink", + "value": "DVJl4l3T8EG2", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "scripts", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Scripts.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GLks18SNjxmC", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "6f9hih2hXXZk", + "GLks18SNjxmC" + ], + "title": "Script API", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "script-api", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Script API.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GPERMystNGTB", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "6f9hih2hXXZk", + "GPERMystNGTB" + ], + "title": "Events", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "events", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Events.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MgibgPcfeuGz", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "6f9hih2hXXZk", + "MgibgPcfeuGz" + ], + "title": "Custom Widgets", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "3sCPPL0LEC1S", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "custom-widget", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Custom Widgets.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "5668rwcirq1t", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "5668rwcirq1t" + ], + "title": "Advanced Showcases", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYjQUYhpbUEW", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "shareAlias", + "value": "advanced-showcases", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Advanced Showcases.html", + "attachments": [], + "dirFileName": "Advanced Showcases", + "children": [ + { + "isClone": false, + "noteId": "l0tKav7yLHGF", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "5668rwcirq1t", + "l0tKav7yLHGF" + ], + "title": "Day Notes", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYjQUYhpbUEW", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "day-notes", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-calendar", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Day Notes.html", + "attachments": [ + { + "attachmentId": "9wmaElfXYjWM", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Day Notes_image.png" + }, + { + "attachmentId": "FL40jUEj7xLt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Day Notes_image.png" + }, + { + "attachmentId": "H3Iy9PpIDd0Z", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Day Notes_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "R7abl2fc6Mxi", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "5668rwcirq1t", + "R7abl2fc6Mxi" + ], + "title": "Weight Tracker", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "weight-tracker", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Weight Tracker.html", + "attachments": [ + { + "attachmentId": "Ah5QpwUUEGf8", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Weight Tracker_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "xYjQUYhpbUEW", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "5668rwcirq1t", + "xYjQUYhpbUEW" + ], + "title": "Task Manager", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "92KeXdKh3Ca1", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "kBrnXNG3Hplm", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GPERMystNGTB", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 110 + }, + { + "type": "label", + "name": "shareAlias", + "value": "task-manager", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Task Manager.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "J5Ex1ZrMbyJ6", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "J5Ex1ZrMbyJ6" + ], + "title": "Custom Request Handler", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "d3fAXQ2diepH", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "custom-request-handler", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Custom Request Handler.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "d3fAXQ2diepH", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "d3fAXQ2diepH" + ], + "title": "Custom Resource Providers", + "notePosition": 90, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Custom Resource Providers.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "pgxEVkzLl1OP", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "pgxEVkzLl1OP" + ], + "title": "ETAPI (REST API)", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "etapi", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "ETAPI (REST API).html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "47ZrP6FNuoG8", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "47ZrP6FNuoG8" + ], + "title": "Default Note Title", + "notePosition": 110, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "default-note-title", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Default Note Title.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "wX4HbRucYSDD", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "wX4HbRucYSDD" + ], + "title": "Database", + "notePosition": 130, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYjQUYhpbUEW", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Wy267RK4M69c", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oyIAJ9PvvwHX", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Gzjqa934BdH4", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "database", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-data", + "isInheritable": false, + "position": 50 + } + ], + "format": "html", + "dataFileName": "Database.html", + "attachments": [], + "dirFileName": "Database", + "children": [ + { + "isClone": false, + "noteId": "oyIAJ9PvvwHX", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "wX4HbRucYSDD", + "oyIAJ9PvvwHX" + ], + "title": "Manually altering the database", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "YKWqdJhzi2VY", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Manually altering the database.html", + "attachments": [ + { + "attachmentId": "0740ph4lJ4rv", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Manually altering the data.png" + }, + { + "attachmentId": "fJlFqdEOpLrF", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Manually altering the data.png" + }, + { + "attachmentId": "lAsR2tqMXurk", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Manually altering the data.png" + }, + { + "attachmentId": "uvaARhqiU4M5", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Manually altering the data.png" + }, + { + "attachmentId": "W4710rPIeZjF", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Manually altering the data.png" + }, + { + "attachmentId": "wL249F7azfME", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "5_Manually altering the data.png" + }, + { + "attachmentId": "yC5HdtMbAaaF", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Manually altering the data.png" + } + ], + "dirFileName": "Manually altering the database", + "children": [ + { + "isClone": false, + "noteId": "YKWqdJhzi2VY", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "wX4HbRucYSDD", + "oyIAJ9PvvwHX", + "YKWqdJhzi2VY" + ], + "title": "SQL Console", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Vc8PjrjAGuOp", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-data", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "SQL Console.html", + "attachments": [ + { + "attachmentId": "1YS10Qg7S4YR", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "SQL Console_image.png" + }, + { + "attachmentId": "827EgLgWhZWF", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_SQL Console_image.png" + }, + { + "attachmentId": "gIbK7NNLu3iZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_SQL Console_image.png" + }, + { + "attachmentId": "pP87PB9ELjQn", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_SQL Console_image.png" + } + ] + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "Gzjqa934BdH4", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "Gzjqa934BdH4" + ], + "title": "Configuration (config.ini or environment variables)", + "notePosition": 140, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "configuration", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Configuration (config.ini or e.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "ivYnonVFBxbQ", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "ivYnonVFBxbQ" + ], + "title": "Bulk actions", + "notePosition": 150, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Bulk actions.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "s3YCWHBfmYuM", + "notePath": [ + "pOsGYCXsbNQG", + "s3YCWHBfmYuM" + ], + "title": "Quick Start", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "JXFeNgU8Xnp1", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "poXkQfguuA0U", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 60 + }, + { + "type": "label", + "name": "shareAlias", + "value": "quick-start", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-run", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Quick Start.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "FJ4qLB6X4fyS", + "notePath": [ + "pOsGYCXsbNQG", + "FJ4qLB6X4fyS" + ], + "title": "What's new", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "81SGnPGMk7Xc", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "NRnIZmSMc5sj", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "rC3pL2aptaRE", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xWbu3jpNWapp", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BMf2nEbYlcUt", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-star", + "isInheritable": false, + "position": 60 + } + ], + "format": "html", + "dataFileName": "What's new.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "gh7bpGYxajRS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS" + ], + "title": "Basic Concepts", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-help-circle", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Basic Concepts", + "children": [ + { + "isClone": false, + "noteId": "Vc8PjrjAGuOp", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp" + ], + "title": "UI Elements", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [ + { + "attachmentId": "0CaTtahPNa2i", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "UI Elements_image.png" + }, + { + "attachmentId": "vbrDuqZjshed", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_UI Elements_image.png" + } + ], + "dirFileName": "UI Elements", + "children": [ + { + "isClone": false, + "noteId": "x3i7MxGccDuM", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "x3i7MxGccDuM" + ], + "title": "Global menu", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Global menu.html", + "attachments": [ + { + "attachmentId": "8fNGILWWQodv", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Global menu_image.png" + }, + { + "attachmentId": "PhNb7G9OgPVt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Global menu_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "BFs8mudNFgCS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS" + ], + "title": "Note", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m523cpzocqaD", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GTwFsgaA0lCt", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ODY7qQn5m2FT", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 90 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Note.html", + "attachments": [], + "dirFileName": "Note", + "children": [ + { + "isClone": false, + "noteId": "p9kXRFAkwN4o", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "p9kXRFAkwN4o" + ], + "title": "Note Icons", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "iuAfnapzpRCB", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "R1L2vUshJD82", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-icons", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Note Icons.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "QEAPj01N5f7w", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "QEAPj01N5f7w" + ], + "title": "Links", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "N6O1qfBGcbFH", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "dPcRcDZwyGAO", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BCkXAVs63Ttv", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "links", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Links.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "mT0HEkOsz6i1", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "mT0HEkOsz6i1" + ], + "title": "Images", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "0vhv7lsOLy82", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "kBrnXNG3Hplm", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "images", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Images.html", + "attachments": [ + { + "attachmentId": "MTsRB4C0yvKX", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Images_image.png" + }, + { + "attachmentId": "PUjxzv10IJkx", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Images_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "0vhv7lsOLy82", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "0vhv7lsOLy82" + ], + "title": "Attachments", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "attachments", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Attachments.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "IakOLONlIfGI", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "IakOLONlIfGI" + ], + "title": "Cloning Notes", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "BqvIJUHkWrvH", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "cloning-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Cloning Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "bwg0e8ewQMak", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "bwg0e8ewQMak" + ], + "title": "Protected Notes", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "zaUtPWl8NcCt", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "protected-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Protected Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MKmLg5x6xkor", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "MKmLg5x6xkor" + ], + "title": "Archived Notes", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "1fkGrskxHx5u", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "archived-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Archived Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "vZWERwf8U3nx", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "vZWERwf8U3nx" + ], + "title": "Note Revisions", + "notePosition": 90, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "MA2uvkVloWXl", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-revisions", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Note Revisions.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "aGlEvb9hyDhS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "aGlEvb9hyDhS" + ], + "title": "Sorting Notes", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "sorting", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Sorting Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "BMf2nEbYlcUt", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "BMf2nEbYlcUt" + ], + "title": "Right-to-Left Support", + "notePosition": 110, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-align-right", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Right-to-Left Support.html", + "attachments": [ + { + "attachmentId": "hLJbTJdMAAjW", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Right-to-Left Support_imag.png" + }, + { + "attachmentId": "J25q0es2PQGJ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Right-to-Left Support_imag.png" + }, + { + "attachmentId": "oW5LpuCUuq1z", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Right-to-Left Support_imag.png" + }, + { + "attachmentId": "ox7Zs0BvBGBD", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Right-to-Left Support_imag.png" + }, + { + "attachmentId": "V7U0KMPHxH2I", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Right-to-Left Support_imag.png" + } + ] + }, + { + "isClone": false, + "noteId": "NRnIZmSMc5sj", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "NRnIZmSMc5sj" + ], + "title": "Export as PDF", + "notePosition": 120, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-file-pdf", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Export as PDF.html", + "attachments": [ + { + "attachmentId": "NfSjRsArIQHy", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Export as PDF_image.png" + }, + { + "attachmentId": "Om2EmdZr54vy", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Export as PDF_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "CoFPLs3dRlXc", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "CoFPLs3dRlXc" + ], + "title": "Read-Only Notes", + "notePosition": 130, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "read-only-note", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-edit-alt", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Read-Only Notes.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "wArbEsdSae6g", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g" + ], + "title": "Navigation", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Navigation", + "children": [ + { + "isClone": false, + "noteId": "kBrnXNG3Hplm", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "kBrnXNG3Hplm" + ], + "title": "Tree Concepts", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "tree-concepts", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Tree Concepts.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "oPVyFC7WL2Lp", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "oPVyFC7WL2Lp" + ], + "title": "Tree Manipulation", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "sLZ7Bcq9p8E9", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "qL7381ZG0lMK", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "tree-manipulation", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Tree Manipulation.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MMiBEQljMQh2", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "MMiBEQljMQh2" + ], + "title": "Note Navigation", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "snfWRIih71MM", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "wpFu8PhUu7e7", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-navigation", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Note Navigation.html", + "attachments": [ + { + "attachmentId": "jDuwVaU8bNtG", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Note Navigation_image.png" + }, + { + "attachmentId": "Pae5L9DXlzQW", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Note Navigation_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "eIg8jdvaoNNd", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "eIg8jdvaoNNd" + ], + "title": "Search", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "search", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Search.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "u3YFHC9tQlpm", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "u3YFHC9tQlpm" + ], + "title": "Bookmarks", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "sag6ww9q4pgW", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "HEtnpiQrEvjl", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "bookmarks", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Bookmarks.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "OR8WJ7Iz9K4U", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "OR8WJ7Iz9K4U" + ], + "title": "Note Hoisting", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "AiBOf1LIykMC", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MMiBEQljMQh2", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-hoisting", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Note Hoisting.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "9sRHySam5fXb", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "9sRHySam5fXb" + ], + "title": "Workspace", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "workspace", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Workspace.html", + "attachments": [ + { + "attachmentId": "V4TIsmtBh8P7", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Workspace_image.png" + }, + { + "attachmentId": "vZSH2mOKzWBx", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Workspace_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "A9Oc6YKKc65v", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "A9Oc6YKKc65v" + ], + "title": "Keyboard Shortcuts", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MMiBEQljMQh2", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QEAPj01N5f7w", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "shareAlias", + "value": "keyboard-shortcuts", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Keyboard Shortcuts.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "Wy267RK4M69c", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Wy267RK4M69c" + ], + "title": "Themes", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "zaQnUsJTbvjr", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "uVF9DAmAmEWC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "VbjZvtUek0Ln", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "themes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Themes.html", + "attachments": [ + { + "attachmentId": "rwK3vuBgh7sY", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Themes_image.png" + } + ], + "dirFileName": "Themes", + "children": [ + { + "isClone": false, + "noteId": "VbjZvtUek0Ln", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Wy267RK4M69c", + "VbjZvtUek0Ln" + ], + "title": "Theme Gallery", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "theme-gallery", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Theme Gallery.html", + "attachments": [ + { + "attachmentId": "wob20Q0zLkMq", + "title": "preview.jpg", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Theme Gallery_preview.jpg" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "mHbBMPDPkVV5", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5" + ], + "title": "Import & Export", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Import & Export", + "children": [ + { + "isClone": false, + "noteId": "Oau6X9rCuegd", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "Oau6X9rCuegd" + ], + "title": "Markdown", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "Y9mwMwSGAaSb", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "xMQSqWySvWBZ", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "imageLink", + "value": "QUqKzK4LHMVA", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "imageLink", + "value": "e3qPZSsTbUZP", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "markdown", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Markdown.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "syuSEKf2rUGr", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "syuSEKf2rUGr" + ], + "title": "Evernote", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "evernote-import", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Evernote.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GnhlmrATVqcH", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "GnhlmrATVqcH" + ], + "title": "OneNote", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "onenote", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "OneNote.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "rC3pL2aptaRE", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "rC3pL2aptaRE" + ], + "title": "Zen mode", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-yin-yang", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Zen mode.html", + "attachments": [ + { + "attachmentId": "Asn6uBNwt6JI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Zen mode_image.png" + }, + { + "attachmentId": "cOMcKGJQYs8Y", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Zen mode_image.png" + }, + { + "attachmentId": "ghjyT4LkrZrU", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Zen mode_image.png" + }, + { + "attachmentId": "HGcQUOEXJ3Sp", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Zen mode_image.png" + }, + { + "attachmentId": "jtzLZ0J0GMub", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "4_Zen mode_image.png" + }, + { + "attachmentId": "lqQtSNb8loOS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Zen mode_image.png" + }, + { + "attachmentId": "LX31yc6Jnksw", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Zen mode_image.png" + }, + { + "attachmentId": "NVSyQubZNFy7", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "7_Zen mode_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "KSZ04uQ2D1St", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St" + ], + "title": "Note Types", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-edit", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Note Types", + "children": [ + { + "isClone": false, + "noteId": "iPIMuisry3hd", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd" + ], + "title": "Text", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "FtmPLgGmgZVC", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "oRWfJLUbb7j7", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "S6Xx8QIWTV66", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "text-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Text.html", + "attachments": [ + { + "attachmentId": "lHWL7KkEhmM3", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Text_image.png" + }, + { + "attachmentId": "yGknq3nsWpef", + "title": "bx-edit-alt.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "Text_bx-edit-alt.svg" + } + ], + "dirFileName": "Text", + "children": [ + { + "isClone": false, + "noteId": "veGu4faJErEM", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "veGu4faJErEM" + ], + "title": "Content language", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BMf2nEbYlcUt", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Content language.html", + "attachments": [ + { + "attachmentId": "TlBagKsAj5ax", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Content language_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "S6Xx8QIWTV66", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "S6Xx8QIWTV66" + ], + "title": "Lists", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-list-ul", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Lists.html", + "attachments": [ + { + "attachmentId": "5cmICTYfg13g", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Lists_image.png" + }, + { + "attachmentId": "6jl7tboJfutt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Lists_image.png" + }, + { + "attachmentId": "d4XfLoK5srYZ", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Lists_image.png" + }, + { + "attachmentId": "eL11eZMPwpmH", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Lists_image.png" + }, + { + "attachmentId": "EnkTpdeLJ6Ft", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "4_Lists_image.png" + }, + { + "attachmentId": "If3k6Tt5cPBt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "5_Lists_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "FVuX89AJuFSw", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "FVuX89AJuFSw" + ], + "title": "Code", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-code", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Code.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "m523cpzocqaD", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "m523cpzocqaD" + ], + "title": "Saved Search", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "rVtYANyVhE9U", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "saved-search", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-file-find", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Saved Search.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "joqzSrDccPKf", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "joqzSrDccPKf" + ], + "title": "Relation Map", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Relation Map.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "bdUJEHsAPYQR", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "bdUJEHsAPYQR" + ], + "title": "Note Map", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Note Map.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "HcABDtFCkbFN", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "HcABDtFCkbFN" + ], + "title": "Render Note", + "notePosition": 90, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-extension", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Render Note.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GTwFsgaA0lCt", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "GTwFsgaA0lCt" + ], + "title": "Book", + "notePosition": 110, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "book-note", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-book", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Book.html", + "attachments": [ + { + "attachmentId": "BmpgL4ol4jJo", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Book_image.png" + }, + { + "attachmentId": "lpq3QC1C5LWg", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Book_image.png" + } + ], + "dirFileName": "Book", + "children": [ + { + "isClone": false, + "noteId": "xWbu3jpNWapp", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "GTwFsgaA0lCt", + "xWbu3jpNWapp" + ], + "title": "Calendar View", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-calendar", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Calendar View.html", + "attachments": [ + { + "attachmentId": "37CfbqKYcOtd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Calendar View_image.png" + }, + { + "attachmentId": "6w8hjC47rS2H", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Calendar View_image.png" + }, + { + "attachmentId": "akAHcIEcGnWR", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Calendar View_image.png" + }, + { + "attachmentId": "AU7dnIevWPrz", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Calendar View_image.png" + }, + { + "attachmentId": "AzRAe3io7LxA", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Calendar View_image.png" + }, + { + "attachmentId": "COiR1tnE86i1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Calendar View_image.png" + }, + { + "attachmentId": "fOdCNTs2BuI0", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Calendar View_image.png" + }, + { + "attachmentId": "GeEGbbeQ1qy9", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Calendar View_image.png" + }, + { + "attachmentId": "gQvwJGB5a4c1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Calendar View_image.png" + }, + { + "attachmentId": "HfBu0m3WXtn2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Calendar View_image.png" + }, + { + "attachmentId": "ho00OJTNrxVI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Calendar View_image.png" + }, + { + "attachmentId": "irfNX8n4159U", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Calendar View_image.png" + }, + { + "attachmentId": "KF56rdNuOwWd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "12_Calendar View_image.png" + }, + { + "attachmentId": "oBWr5GL6cUAZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "13_Calendar View_image.png" + }, + { + "attachmentId": "oS6yUoQtfhpg", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "14_Calendar View_image.png" + }, + { + "attachmentId": "PYHfGSBQpr0y", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "15_Calendar View_image.png" + }, + { + "attachmentId": "rYaJQN8tjfsG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "16_Calendar View_image.png" + }, + { + "attachmentId": "u2c09UpZghff", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "17_Calendar View_image.png" + }, + { + "attachmentId": "UCQb1diHfd02", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "18_Calendar View_image.png" + }, + { + "attachmentId": "xqgGyeWWqLyg", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "19_Calendar View_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "s1aBHPd79XYj", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj" + ], + "title": "Mermaid Diagrams", + "notePosition": 120, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "r44dpvA1xFu8", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "opAFABmyb3CU", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "mermaid-diagrams", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-selection", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Mermaid Diagrams.html", + "attachments": [], + "dirFileName": "Mermaid Diagrams", + "children": [ + { + "isClone": false, + "noteId": "opAFABmyb3CU", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj", + "opAFABmyb3CU" + ], + "title": "ELK on", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "mermaid", + "mime": "text/plain", + "attributes": [], + "dataFileName": "ELK on.txt", + "attachments": [ + { + "attachmentId": "biyznKlYQ7my", + "title": "mermaid-export.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "ELK on_mermaid-export.svg" + } + ] + }, + { + "isClone": false, + "noteId": "r44dpvA1xFu8", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj", + "r44dpvA1xFu8" + ], + "title": "ELK off", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "mermaid", + "mime": "text/plain", + "attributes": [], + "dataFileName": "ELK off.txt", + "attachments": [ + { + "attachmentId": "rQI7SXljnpJM", + "title": "mermaid-export.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "ELK off_mermaid-export.svg" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "grjYqerjn243", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "grjYqerjn243" + ], + "title": "Canvas", + "notePosition": 140, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-pen", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Canvas.html", + "attachments": [ + { + "attachmentId": "DC9fvvootwwZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Canvas_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "1vHRoWCEjj0L", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "1vHRoWCEjj0L" + ], + "title": "Web View", + "notePosition": 150, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-globe-alt", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Web View.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "gBbsAeiuUxI5", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "gBbsAeiuUxI5" + ], + "title": "Mind Map", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-sitemap", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Mind Map.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "81SGnPGMk7Xc", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "81SGnPGMk7Xc" + ], + "title": "Geo map", + "notePosition": 170, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-map-alt", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Geo map.html", + "attachments": [ + { + "attachmentId": "1f07O0Z25ZRr", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Geo map_image.png" + }, + { + "attachmentId": "3oh61qhNLu7D", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Geo map_image.png" + }, + { + "attachmentId": "6wUkw5RWE39e", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Geo map_image.png" + }, + { + "attachmentId": "aCSNn9QlgHFi", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Geo map_image.png" + }, + { + "attachmentId": "aCuXZY7WV4li", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Geo map_image.png" + }, + { + "attachmentId": "agH6yREFgsoU", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Geo map_image.png" + }, + { + "attachmentId": "AHyDUM6R5HeG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Geo map_image.png" + }, + { + "attachmentId": "CcjWLhE3KKfv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Geo map_image.png" + }, + { + "attachmentId": "DapDey8gMiFc", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Geo map_image.png" + }, + { + "attachmentId": "fQy8R1vxKhwN", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Geo map_image.png" + }, + { + "attachmentId": "gJ4Yz80jxcbn", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Geo map_image.png" + }, + { + "attachmentId": "Mx2xwNIk76ZS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Geo map_image.png" + }, + { + "attachmentId": "oaahbsMRbqd2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "12_Geo map_image.png" + }, + { + "attachmentId": "pGf1p74KKGU4", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "13_Geo map_image.png" + }, + { + "attachmentId": "tDWsliJj9ncm", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "14_Geo map_image.png" + }, + { + "attachmentId": "tfa1TRUatWEh", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "15_Geo map_image.png" + }, + { + "attachmentId": "USbvJ38T4AKA", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "16_Geo map_image.png" + }, + { + "attachmentId": "x6yBLIsY2LSv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "17_Geo map_image.png" + }, + { + "attachmentId": "ZvTlu9WMd37z", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "18_Geo map_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "pKK96zzmvBGf", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf" + ], + "title": "Theme development", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-palette", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Theme development", + "children": [ + { + "isClone": false, + "noteId": "7NfNr5pZpVKV", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "7NfNr5pZpVKV" + ], + "title": "Creating a custom theme", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "WFGzWeUK6arS", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Creating a custom theme.html", + "attachments": [ + { + "attachmentId": "14xpFnX5GIkZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Creating a custom theme_im.png" + }, + { + "attachmentId": "EzM9s8bCnJ85", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Creating a custom theme_im.png" + }, + { + "attachmentId": "M3C6oYYIakiS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Creating a custom theme_im.png" + }, + { + "attachmentId": "PY4a4fueTRUZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Creating a custom theme_im.png" + }, + { + "attachmentId": "QkaP2Ge0lagI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Creating a custom theme_im.png" + }, + { + "attachmentId": "yJVfT7rjp4tI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Creating a custom theme_im.png" + } + ] + }, + { + "isClone": false, + "noteId": "WFGzWeUK6arS", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "WFGzWeUK6arS" + ], + "title": "Customize the Next theme", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Customize the Next theme.html", + "attachments": [ + { + "attachmentId": "3fAj97aV2noG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Customize the Next theme_i.png" + } + ] + }, + { + "isClone": false, + "noteId": "WN5z4M8ASACJ", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "WN5z4M8ASACJ" + ], + "title": "Reference", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "d3fAXQ2diepH", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Reference.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "AlhDUqhENtH7", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "AlhDUqhENtH7" + ], + "title": "Custom app-wide CSS", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Custom app-wide CSS.html", + "attachments": [ + { + "attachmentId": "fkMLaf6reA6I", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Custom app-wide CSS_image.png" + }, + { + "attachmentId": "TIerrMjmeich", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Custom app-wide CSS_image.png" + }, + { + "attachmentId": "YUrNq5vsCwHe", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Custom app-wide CSS_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "k2Gc17NbaAwb", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb" + ], + "title": "Developer Guides", + "notePosition": 120, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxl-javascript", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Developer Guides", + "children": [ + { + "isClone": false, + "noteId": "yIhgI5H7A2Sm", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "yIhgI5H7A2Sm" + ], + "title": "Frontend Basics", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "SynTBQiBsdYJ", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "frontend-basics", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Frontend Basics.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "SynTBQiBsdYJ", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "SynTBQiBsdYJ" + ], + "title": "Widget Basics", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "widget-basics", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Widget Basics.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "es8OU2GuguFU", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU" + ], + "title": "Examples", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Examples", + "children": [ + { + "isClone": false, + "noteId": "7kZPMD0uFwkH", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU", + "7kZPMD0uFwkH" + ], + "title": "Downloading responses from Google Forms", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Downloading responses from Goo.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "DL92EjAaXT26", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU", + "DL92EjAaXT26" + ], + "title": "Using promoted attributes to configure scripts", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Using promoted attributes to c.html", + "attachments": [ + { + "attachmentId": "7P3jzVEa1mk7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Using promoted attributes .png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "CXny4YWKsD7z", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z" + ], + "title": "REST API", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "REST API", + "children": [ + { + "isClone": false, + "noteId": "cqCjxpN8NhbH", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "cqCjxpN8NhbH" + ], + "title": "ETAPI", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "ETAPI", + "children": [ + { + "isClone": false, + "noteId": "9qPsTWBorUhQ", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "cqCjxpN8NhbH", + "9qPsTWBorUhQ" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/etapi/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "0vTSyvhPTAOz", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "0vTSyvhPTAOz" + ], + "title": "Internal API", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Internal API", + "children": [ + { + "isClone": false, + "noteId": "z8O2VG4ZZJD7", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "0vTSyvhPTAOz", + "z8O2VG4ZZJD7" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/api/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "Otzi9La2YAUX", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX" + ], + "title": "Installation & Setup", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-cog", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Installation & Setup", + "children": [ + { + "isClone": false, + "noteId": "poXkQfguuA0U", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "poXkQfguuA0U" + ], + "title": "Desktop Installation", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l2VkvOwUNfZj", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "desktop-installation", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Desktop Installation.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "WOcw2SLH6tbX", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX" + ], + "title": "Server Installation", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "rWX5eY045zbE", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "3tW6mORuTHnB", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "J1Bb6lVlwU5T", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "DCmT6e7clMoP", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "moVgBcoxE3EK", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l2VkvOwUNfZj", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Gzjqa934BdH4", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "fDLvzOx29Pfg", + "isInheritable": false, + "position": 120 + }, + { + "type": "label", + "name": "shareAlias", + "value": "server-installation", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Server Installation.html", + "attachments": [], + "dirFileName": "Server Installation", + "children": [ + { + "isClone": false, + "noteId": "Dgg7bR3b6K9j", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "Dgg7bR3b6K9j" + ], + "title": "1. Installing the server", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "1. Installing the server", + "children": [ + { + "isClone": false, + "noteId": "3tW6mORuTHnB", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "Dgg7bR3b6K9j", + "3tW6mORuTHnB" + ], + "title": "Packaged server installation", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l2VkvOwUNfZj", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "packaged-server-installation", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Packaged server installation.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "rWX5eY045zbE", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "Dgg7bR3b6K9j", + "rWX5eY045zbE" + ], + "title": "Docker Server Installation", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "ud6MShXL4WpO", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "fDLvzOx29Pfg", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "docker-server-installation", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Docker Server Installation.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "moVgBcoxE3EK", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "Dgg7bR3b6K9j", + "moVgBcoxE3EK" + ], + "title": "NixOS server installation", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "nixos-server-installation", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "NixOS server installation.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "J1Bb6lVlwU5T", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "Dgg7bR3b6K9j", + "J1Bb6lVlwU5T" + ], + "title": "Manual server installation", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "l2VkvOwUNfZj", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "manual-server-installation", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Manual server installation.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "DCmT6e7clMoP", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "Dgg7bR3b6K9j", + "DCmT6e7clMoP" + ], + "title": "Kubernetes server installation", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "kubernetes-server-installation", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Kubernetes server installation.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "vcjrb3VVYPZI", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "vcjrb3VVYPZI" + ], + "title": "2. Reverse proxy", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "2. Reverse proxy", + "children": [ + { + "isClone": false, + "noteId": "ud6MShXL4WpO", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "vcjrb3VVYPZI", + "ud6MShXL4WpO" + ], + "title": "Nginx", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "nginx-proxy-setup", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Nginx.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "fDLvzOx29Pfg", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "vcjrb3VVYPZI", + "fDLvzOx29Pfg" + ], + "title": "Apache", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "apache-proxy-setup", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Apache.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "l2VkvOwUNfZj", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "l2VkvOwUNfZj" + ], + "title": "TLS Configuration", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Gzjqa934BdH4", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "tls-configuration", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "TLS Configuration.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "7DAiwaf8Z7Rz", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "7DAiwaf8Z7Rz" + ], + "title": "Multi-Factor Authentication", + "notePosition": 110, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "multi-factor-authentication", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareHiddenFromTree", + "value": "", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Multi-Factor Authentication.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "KaM3TfD7mP78", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "WOcw2SLH6tbX", + "KaM3TfD7mP78" + ], + "title": "Reverse proxy setup", + "notePosition": 120, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Reverse proxy setup.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "cbkrhQjrkKrh", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "cbkrhQjrkKrh" + ], + "title": "Synchronization", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "676Ekdv73T7I", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "SDHWNDsB68aJ", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "imageLink", + "value": "qGTyyKX4TceE", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l2VkvOwUNfZj", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "poXkQfguuA0U", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "vZWERwf8U3nx", + "isInheritable": false, + "position": 60 + }, + { + "type": "label", + "name": "shareAlias", + "value": "synchronization", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Synchronization.html", + "attachments": [ + { + "attachmentId": "s3fKDqHslToK", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Synchronization_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "RDslemsQ6gCp", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "RDslemsQ6gCp" + ], + "title": "Mobile Frontend", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "TFAiJIXJFfqv", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "fi37V32TNyzm", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwg0e8ewQMak", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "mobile-frontend", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Mobile Frontend.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MtPxeAWVAzMg", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "MtPxeAWVAzMg" + ], + "title": "Web Clipper", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "web-clipper", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Web Clipper.html", + "attachments": [ + { + "attachmentId": "fhKf5Otv0M5Y", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Web Clipper_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "n1lujUxCwipy", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "n1lujUxCwipy" + ], + "title": "Upgrading TriliumNext", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "rWX5eY045zbE", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ODY7qQn5m2FT", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "upgrading-trilium", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Upgrading TriliumNext.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "ODY7qQn5m2FT", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "ODY7qQn5m2FT" + ], + "title": "Backup", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "Gzjqa934BdH4", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "backup", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Backup.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "tAassRL4RSQL", + "notePath": [ + "pOsGYCXsbNQG", + "Otzi9La2YAUX", + "tAassRL4RSQL" + ], + "title": "Data directory", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ODY7qQn5m2FT", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "data-directory", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-folder-open", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Data directory.html", + "attachments": [ + { + "attachmentId": "NONZTci1YkNe", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Data directory_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "i6dbnitykE5D", + "notePath": [ + "pOsGYCXsbNQG", + "i6dbnitykE5D" + ], + "title": "FAQ", + "notePosition": 170, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BCkXAVs63Ttv", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "shareAlias", + "value": "faq", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-question-mark", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "FAQ.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "BgmBlOIl72jZ", + "notePath": [ + "pOsGYCXsbNQG", + "BgmBlOIl72jZ" + ], + "title": "Troubleshooting", + "notePosition": 180, + "prefix": null, + "isExpanded": true, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "MgibgPcfeuGz", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x59R8J8KV5Bp", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ODY7qQn5m2FT", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "qzNzp9LYQyPT", + "isInheritable": false, + "position": 60 + }, + { + "type": "label", + "name": "shareAlias", + "value": "troubleshooting", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-bug", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Troubleshooting.html", + "attachments": [], + "dirFileName": "Troubleshooting", + "children": [ + { + "isClone": false, + "noteId": "wy8So3yZZlH9", + "notePath": [ + "pOsGYCXsbNQG", + "BgmBlOIl72jZ", + "wy8So3yZZlH9" + ], + "title": "Reporting issues", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Reporting issues.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "x59R8J8KV5Bp", + "notePath": [ + "pOsGYCXsbNQG", + "BgmBlOIl72jZ", + "x59R8J8KV5Bp" + ], + "title": "Anonymized Database", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "anonymized-database", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Anonymized Database.html", + "attachments": [ + { + "attachmentId": "xh9biKiOnMJv", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Anonymized Database_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "qzNzp9LYQyPT", + "notePath": [ + "pOsGYCXsbNQG", + "BgmBlOIl72jZ", + "qzNzp9LYQyPT" + ], + "title": "Error logs", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "zIQ1XGaUbB7i", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "v8H3fXMFPki0", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "tAassRL4RSQL", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x59R8J8KV5Bp", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "error-logs", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Error logs.html", + "attachments": [ + { + "attachmentId": "8b6d0LUU1aMl", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Error logs_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "vdlYGAcpXAgc", + "notePath": [ + "pOsGYCXsbNQG", + "BgmBlOIl72jZ", + "vdlYGAcpXAgc" + ], + "title": "Synchronization fails with 504 Gateway Timeout", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "ud6MShXL4WpO", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Synchronization fails with 504.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "Wxt3vVlxlYLi", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi" + ], + "title": "Attachments", + "notePosition": 190, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "shareHiddenFromTree", + "value": "", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Attachments", + "children": [ + { + "isClone": false, + "noteId": "HEtnpiQrEvjl", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "HEtnpiQrEvjl" + ], + "title": "bookmark-folder.png", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "bookmark-folder.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "bookmark-folder.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "sag6ww9q4pgW", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "sag6ww9q4pgW" + ], + "title": "bookmarks.gif", + "notePosition": 170, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "bookmarks.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "bookmarks.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "W9yOvDvpsEtR", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "W9yOvDvpsEtR" + ], + "title": "bookmarks.png", + "notePosition": 180, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "bookmarks.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "bookmarks.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "DVJl4l3T8EG2", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "DVJl4l3T8EG2" + ], + "title": "button-script.png", + "notePosition": 190, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "button-script.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "button-script.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "oZfQufNxgrZ9", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "oZfQufNxgrZ9" + ], + "title": "canvas-note-image.png", + "notePosition": 200, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "canvas-note-image.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "canvas-note-image.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "BJpEsPXDjVLh", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "BJpEsPXDjVLh" + ], + "title": "chrome-trilium-web-clipper.png", + "notePosition": 210, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "chrome-trilium-web-clipper.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "chrome-trilium-web-clipper.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "8jgXl1RUGL4H", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "8jgXl1RUGL4H" + ], + "title": "code-note.png", + "notePosition": 230, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "code-note.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "code-note.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "BqvIJUHkWrvH", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "BqvIJUHkWrvH" + ], + "title": "create-clone.gif", + "notePosition": 240, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "create-clone.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "create-clone.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "N6O1qfBGcbFH", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "N6O1qfBGcbFH" + ], + "title": "create-external-link.gif", + "notePosition": 250, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "create-external-link.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "create-external-link.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "dPcRcDZwyGAO", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "dPcRcDZwyGAO" + ], + "title": "create-link-to-note.gif", + "notePosition": 260, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "create-link-to-note.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "create-link-to-note.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "3sCPPL0LEC1S", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "3sCPPL0LEC1S" + ], + "title": "Custom-widget image.png", + "notePosition": 270, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "Custom-widget image.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "Custom-widget image.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "ruEpqTPbi0CT", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "ruEpqTPbi0CT" + ], + "title": "custom-widget-image.png", + "notePosition": 280, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "custom-widget-image.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "custom-widget-image.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "aa84l6zJyAVH", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "aa84l6zJyAVH" + ], + "title": "cut-to-subnote.gif", + "notePosition": 290, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "cut-to-subnote.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "cut-to-subnote.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "zaQnUsJTbvjr", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "zaQnUsJTbvjr" + ], + "title": "dark-theme.png", + "notePosition": 300, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "dark-theme.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "dark-theme.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "sLZ7Bcq9p8E9", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "sLZ7Bcq9p8E9" + ], + "title": "drag-and-drop.gif", + "notePosition": 330, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "drag-and-drop.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "drag-and-drop.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "v8H3fXMFPki0", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "v8H3fXMFPki0" + ], + "title": "error-logs-export-subtree.png", + "notePosition": 350, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "error-logs-export-subtree.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "error-logs-export-subtree.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "zIQ1XGaUbB7i", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "zIQ1XGaUbB7i" + ], + "title": "error-logs-firefox-context-men.png", + "notePosition": 360, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "error-logs-firefox-context-men.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "error-logs-firefox-context.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "1fkGrskxHx5u", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "1fkGrskxHx5u" + ], + "title": "hide-archived.png", + "notePosition": 370, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "hide-archived.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "hide-archived.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "JXFeNgU8Xnp1", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "JXFeNgU8Xnp1" + ], + "title": "home-button.svg", + "notePosition": 380, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/svg+xml", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "home-button.svg", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "home-button.svg", + "attachments": [] + }, + { + "isClone": false, + "noteId": "snfWRIih71MM", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "snfWRIih71MM" + ], + "title": "jump-to.gif", + "notePosition": 390, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "jump-to.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "jump-to.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "e3qPZSsTbUZP", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "e3qPZSsTbUZP" + ], + "title": "markdown-export-note.gif", + "notePosition": 410, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "markdown-export-note.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "markdown-export-note.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "QUqKzK4LHMVA", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "QUqKzK4LHMVA" + ], + "title": "markdown-export-subtree.gif", + "notePosition": 420, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "markdown-export-subtree.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "markdown-export-subtree.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "xMQSqWySvWBZ", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "xMQSqWySvWBZ" + ], + "title": "markdown-file-import.gif", + "notePosition": 430, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "markdown-file-import.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "markdown-file-import.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "Y9mwMwSGAaSb", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "Y9mwMwSGAaSb" + ], + "title": "markdown-inline-import.gif", + "notePosition": 440, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "markdown-inline-import.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "markdown-inline-import.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "1YUO9Ij4XIwE", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "1YUO9Ij4XIwE" + ], + "title": "math.gif", + "notePosition": 450, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "math.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "math.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "fJ7nbsprnKr7", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "fJ7nbsprnKr7" + ], + "title": "mermaid.png", + "notePosition": 460, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "mermaid.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "mermaid.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "TFAiJIXJFfqv", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "TFAiJIXJFfqv" + ], + "title": "mobile-smartphone.png", + "notePosition": 470, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "mobile-smartphone.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "mobile-smartphone.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "fi37V32TNyzm", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "fi37V32TNyzm" + ], + "title": "mobile-tablet.png", + "notePosition": 480, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "mobile-tablet.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "mobile-tablet.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "qL7381ZG0lMK", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "qL7381ZG0lMK" + ], + "title": "move-note-with-keyboard.gif", + "notePosition": 490, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "move-note-with-keyboard.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "move-note-with-keyboard.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "AiBOf1LIykMC", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "AiBOf1LIykMC" + ], + "title": "note-hoisting.gif", + "notePosition": 500, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "note-hoisting.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "note-hoisting.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "iuAfnapzpRCB", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "iuAfnapzpRCB" + ], + "title": "note-icon-change.png", + "notePosition": 510, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "note-icon-change.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "note-icon-change.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "R1L2vUshJD82", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "R1L2vUshJD82" + ], + "title": "note-icon-gallery.png", + "notePosition": 520, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "note-icon-gallery.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "note-icon-gallery.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "mWxLjZrNAoV7", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "mWxLjZrNAoV7" + ], + "title": "note-map.png", + "notePosition": 530, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "note-map.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "note-map.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MA2uvkVloWXl", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "MA2uvkVloWXl" + ], + "title": "note-revisions.png", + "notePosition": 540, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "note-revisions.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "note-revisions.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "umjOUcnZi4z2", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "umjOUcnZi4z2" + ], + "title": "promoted-attributes-queen.png", + "notePosition": 550, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "promoted-attributes-queen.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "promoted-attributes-queen.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "rxH2Dm1jn6YT", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "rxH2Dm1jn6YT" + ], + "title": "promoted-attributes.png", + "notePosition": 560, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "promoted-attributes.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "promoted-attributes.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "zaUtPWl8NcCt", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "zaUtPWl8NcCt" + ], + "title": "protecting-note.gif", + "notePosition": 570, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "protecting-note.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "protecting-note.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "wpFu8PhUu7e7", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "wpFu8PhUu7e7" + ], + "title": "recent-notes.gif", + "notePosition": 580, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "recent-notes.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "recent-notes.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "EH6qNioOHeyT", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "EH6qNioOHeyT" + ], + "title": "relation-map-dev-process.png", + "notePosition": 590, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "relation-map-dev-process.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "relation-map-dev-process.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "N98UhifxrVpZ", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "N98UhifxrVpZ" + ], + "title": "relation-map-family-demo.gif", + "notePosition": 600, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "relation-map-family-demo.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "relation-map-family-demo.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "xeZPrfi77XPu", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "xeZPrfi77XPu" + ], + "title": "relation-map-family.png", + "notePosition": 610, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "relation-map-family.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "relation-map-family.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "rVtYANyVhE9U", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "rVtYANyVhE9U" + ], + "title": "saved-search-image.gif", + "notePosition": 620, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "saved-search-image.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "saved-search-image.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "VvQ2QZOyZhZZ", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "VvQ2QZOyZhZZ" + ], + "title": "saved-search.gif", + "notePosition": 630, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/gif", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "saved-search.gif", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "saved-search.gif", + "attachments": [] + }, + { + "isClone": false, + "noteId": "V01a3OdC9O06", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "V01a3OdC9O06" + ], + "title": "screenshot.png", + "notePosition": 640, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "screenshot.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "screenshot.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "lCtZz2Z59wPT", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "lCtZz2Z59wPT" + ], + "title": "share-multiple-notes-web.png", + "notePosition": 650, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "share-multiple-notes-web.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "share-multiple-notes-web.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "Ky3qOJJMZ731", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "Ky3qOJJMZ731" + ], + "title": "share-single-note-web.png", + "notePosition": 660, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "share-single-note-web.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "share-single-note-web.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "5GcxcE9fP9xX", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "5GcxcE9fP9xX" + ], + "title": "share-single-note.png", + "notePosition": 670, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "share-single-note.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "share-single-note.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "jEQNvpyaXIWE", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "jEQNvpyaXIWE" + ], + "title": "shared-list.png", + "notePosition": 680, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "shared-list.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "shared-list.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "OFHiQYnGo2rr", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "OFHiQYnGo2rr" + ], + "title": "split.png", + "notePosition": 690, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "split.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "split.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "uVF9DAmAmEWC", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "uVF9DAmAmEWC" + ], + "title": "steel-blue.png", + "notePosition": 710, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "steel-blue.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "steel-blue.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "676Ekdv73T7I", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "676Ekdv73T7I" + ], + "title": "sync-config.png", + "notePosition": 720, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "sync-config.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "sync-config.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "qGTyyKX4TceE", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "qGTyyKX4TceE" + ], + "title": "sync-in-progress.png", + "notePosition": 730, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "sync-in-progress.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "sync-in-progress.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "SDHWNDsB68aJ", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "SDHWNDsB68aJ" + ], + "title": "sync-init.png", + "notePosition": 740, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "sync-init.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "sync-init.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "92KeXdKh3Ca1", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "92KeXdKh3Ca1" + ], + "title": "task-manager.png", + "notePosition": 750, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "task-manager.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "task-manager.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "uuGrYX41lWN0", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "uuGrYX41lWN0" + ], + "title": "template-create-instance-note.png", + "notePosition": 760, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "template-create-instance-note.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "template-create-instance-n.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "Y8kzZ5MSZLCC", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "Y8kzZ5MSZLCC" + ], + "title": "template.png", + "notePosition": 770, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "template.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "template.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "oRWfJLUbb7j7", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "oRWfJLUbb7j7" + ], + "title": "text-notes-formatting-block.png", + "notePosition": 780, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "text-notes-formatting-block.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "text-notes-formatting-bloc.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "FtmPLgGmgZVC", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "FtmPLgGmgZVC" + ], + "title": "text-notes-formatting-inline.png", + "notePosition": 790, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "text-notes-formatting-inline.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "text-notes-formatting-inli.png", + "attachments": [] + }, + { + "isClone": false, + "noteId": "skY4DIE2Iks5", + "notePath": [ + "pOsGYCXsbNQG", + "Wxt3vVlxlYLi", + "skY4DIE2Iks5" + ], + "title": "text-notes-image.png", + "notePosition": 800, + "prefix": null, + "isExpanded": false, + "type": "image", + "mime": "image/png", + "attributes": [ + { + "type": "label", + "name": "originalFileName", + "value": "text-notes-image.png", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "text-notes-image.png", + "attachments": [] + } + ] + } + ] + }, + { + "noImport": true, + "dataFileName": "navigation.html" + }, + { + "noImport": true, + "dataFileName": "index.html" + }, + { + "noImport": true, + "dataFileName": "style.css" + } + ] +} \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide.html b/src/public/app/doc_notes/en/User Guide/User Guide.html new file mode 100644 index 000000000..2e335be7f --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide.html @@ -0,0 +1,21 @@ + + + + + + + + User Guide + + + +
+

User Guide

+ +
+

The sub-children of this note are automatically synced.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Attributes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Attributes_image.png new file mode 100644 index 000000000..ecb5f2d6d Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Attributes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Code Notes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Code Notes_image.png new file mode 100644 index 000000000..21216c101 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Code Notes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Note Map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Note Map_image.png new file mode 100644 index 000000000..a16316f82 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Note Map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases.html new file mode 100644 index 000000000..5e3d47e0f --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases.html @@ -0,0 +1,37 @@ + + + + + + + + Advanced Showcases + + + +
+

Advanced Showcases

+ +
+

Trilium offers advanced functionality through Scripts and + Promoted Attributes. To illustrate these features, we've prepared + several showcases available in the demo notes:

+ +

It's important to note that these examples are not natively supported + by Trilium out of the box; instead, they demonstrate what you can build + within Trilium.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/1_Day Notes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/1_Day Notes_image.png new file mode 100644 index 000000000..9e03a2375 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/1_Day Notes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png new file mode 100644 index 000000000..7623131d6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.html new file mode 100644 index 000000000..c4c0bfbc2 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.html @@ -0,0 +1,111 @@ + + + + + + + + Day Notes + + + +
+

Day Notes

+ +
+

A common pattern in note-taking is that a lot of notes will be centered + around a certain date - e.g. you have some tasks which needs to be done + on a certain date, you have meeting minutes from a certain date, you have + your thoughts etc. and it all revolves around a date on which they occurred. + For this reason, it makes sense to create a certain "day workspace" which + will centralize all those notes relevant for a certain date.

+

For this, Trilium provides a concept of "day note". Trilium semi-automatically + generates a single note for each day. Under this note you can save all + those relevant notes.

+

Select an existing day note, and the menubar contains a calendar widget. + Select any day to create a note for that day. 

+

+ +

+

This pattern works well also because of Cloning Notes functionality + - note can appear in multiple places in the note tree, so besides appearing + under day note, it can also be categorized into other notes.

+ +

Demo

+ +

+ +

+

You can see the structure of day notes appearing under "Journal" note + - there's a note for the whole year 2017, under it, you have "12 - December" + which then contains "18 - Monday". This is our "day note" which contains + some text in its content and also has some child notes (some of them are + from Task manager).

+

You can also notice how this day note has promoted attribute "weight" + where you can track your daily weight. This data is then used in Weight tracker.

+ +

Templates

+ +

Trilium provides template functionality, + and it could be used together with day notes.

+

You can define one of the following relations on the root of the journal + (identified by #calendarRoot label):

+ +

All of these are relations. When Trilium creates a new note for year or + month or date, it will take a look at the root and attach a corresponding ~template relation + to the newly created role. Using this, you can e.g. create your daily template + with e.g. checkboxes for daily routine etc.

+ +

Date pattern

+ +

It's possible to customize the title of generated date notes by defining + a #datePattern label on a root calendar note (identified by #calendarRoot label). + Following are possible values:

+ + +

Month pattern

+ +

It is also possible to customize the title of generated month notes through + the #monthPattern attribute, much like #datePattern. + The options are:

+ +

The default is {monthNumberPadded} - {month} +

+ +

Implementation

+ +

Trilium has some special support for day notes in the form of backend Script API - + see e.g. getDayNote() function.

+

Day (and year, month) notes are created with a label - e.g. #dateNote="2018-08-16" this + can then be used by other scripts to add new notes to day note etc.

+

Journal also has relation child:child:child:template=Day template (see + [[attribute inheritance]]) which effectively adds [[template]] to day notes + (grand-grand-grand children of Journal).

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes_image.png new file mode 100644 index 000000000..328e630a2 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.html new file mode 100644 index 000000000..dac08e985 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.html @@ -0,0 +1,97 @@ + + + + + + + + Task Manager + + + +
+

Task Manager

+ +
+

Task Manager is a promoted attributes and + scriptsshowcase present in the demo notes.

+ +

Demo

+ +

+ +

+

Task Manager manages outstanding (TODO) tasks and finished tasks (non-empty + doneDate attribute). Outstanding tasks are further categorized by location + and arbitrary tags - whenever you change tag attribute in the task note, + this task is then automatically moved to appropriate location.

+

Task Manager also integrates with day notes - + notes are cloned into + day note to both todoDate note and doneDate note (with prefix of + either "TODO" or "DONE").

+ +

Implementation

+ +

New tasks are created in the TODO note which has ~child:template + relation(see attribute inheritance) + pointing to the task template.

+ +

Attributes

+ +

Task template defines several promoted attributes - + todoDate, doneDate, tags, location. Importantly it also defines ~runOnAttributeChange relation + - event handler which is run on + attribute change. This script handles + when e.g. we fill out the doneDate attribute - meaning the task is done + and should be moved to "Done" note and removed from TODO, locations and + tags.

+ +

New task button

+ +

There's also "button" note which contains simple script which adds a button + to create new note (task) in the TODO note.

+
api.addButtonToToolbar({
+    title: 'New task',
+    icon: 'check',
+    shortcut: 'alt+n',
+    action: async () => {
+        // creating notes is backend (server) responsibility so we need to pass
+        // the control there
+        const taskNoteId = await api.runOnBackend(async () => {
+            const todoRootNote = await api.getNoteWithLabel('taskTodoRoot');
+            const {note} = await api.createNote(todoRootNote.noteId, 'new task', '');
+
+            return note.noteId;
+        });
+
+        // we got an ID of newly created note and we want to immediatelly display it
+        await api.activateNewNote(taskNoteId);
+    }
+});
+

CSS

+ +

In the demo screenshot above you may notice that TODO tasks are in red + color and DONE tasks are green.

+

This is done by having this CSS code note which + defines extra CSS classes:

+
span.fancytree-node.todo .fancytree-title {
+    color: red !important;
+}
+
+span.fancytree-node.done .fancytree-title {
+    color: green !important;
+}
+

This code note has #appCss + labelwhich is recognized by Trilium on startup and loaded as CSS into + the application.

+

Second part of this functionality is based in event handler described + above which assigns #cssClass label to the task to either "done" + or "todo" based on the task status.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.html new file mode 100644 index 000000000..9efef1a86 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.html @@ -0,0 +1,99 @@ + + + + + + + + Weight Tracker + + + +
+

Weight Tracker

+ +
+

+ +

+

The Weight Tracker is a Script API showcase + present in the demo notes.

+

By adding weight as a promoted attribute in + the template from which day notes are + created, you can aggregate the data and plot weight change over time.

+ +

Implementation

+ +

The Weight Tracker note in the screenshot above is of the type Render Note. + That type of note doesn't have any useful content itself. Instead it is + a placeholder where a script can + render its output.

+

Scripts for Render Notes are defined in a relation called ~renderNote. + In this example, it's the Weight Tracker's child Implementation. + The Implementation consists of two code notes that + contain some HTML and JavaScript respectively, which load all the notes + with a weight attribute and display their values in a chart.

+

To actually render the chart, we're using a third party library called + chart.jswhich is imported as an attachment, since it's not built into + Trilium.

+ +

Code

+ +

Here's the content of the script which is placed in a code note of + type JS Frontend:

+
async function getChartData() {
+    const days = await api.runOnBackend(async () => {
+        const notes = api.getNotesWithLabel('weight');
+        const days = [];
+
+        for (const note of notes) {
+            const date = note.getLabelValue('dateNote');
+            const weight = parseFloat(note.getLabelValue('weight'));
+
+            if (date && weight) {
+                days.push({ date, weight });
+            }
+        }
+
+        days.sort((a, b) => a.date > b.date ? 1 : -1);
+
+        return days;
+    });
+
+    const datasets = [
+        {
+            label: "Weight (kg)",
+            backgroundColor: 'red',
+            borderColor: 'red',
+            data: days.map(day => day.weight),
+            fill: false,
+            spanGaps: true,
+            datalabels: {
+                display: false
+            }
+        }
+    ];
+
+    return {
+        datasets: datasets,
+        labels: days.map(day => day.date)
+    };
+}
+
+const ctx = $("#canvas")[0].getContext("2d");
+
+new chartjs.Chart(ctx, {
+    type: 'line',
+    data: await getChartData()
+});
+

How to remove the Weight Tracker button from the top bar

+ +

In the link map of the Weight Tracker, there is a note called Button. + Open it and delete or comment out its contents. The Weight Tracker button + will disappear after you restart Trilium.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker_image.png new file mode 100644 index 000000000..0167e759b Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes.html new file mode 100644 index 000000000..a4e1f4023 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes.html @@ -0,0 +1,155 @@ + + + + + + + + Attributes + + + +
+

Attributes

+ +
+

In Trilium, attributes are key-value pairs assigned to notes, providing + additional metadata or functionality. There are two primary types of attributes:

+
    +
  1. Labels: Simple key-value text records
  2. +
  3. Relations: Named links to other notes
  4. +
+

These attributes play a crucial role in organizing, categorising, and + enhancing the functionality of notes.

+

+ +

+ +

Labels

+ +

Labels in Trilium can be used for a variety of purposes:

+ +

Labels are also searchable, enhancing note retrieval.

+ +

Common Labels for Advanced Configuration

+ + + +

Relations

+ +

Relations define connections between notes, similar to links.

+ +

Uses

+ + + +

Common Relations

+ + + +

Multiplicity

+ +

Attributes in Trilium can be "multivalued", meaning multiple attributes + with the same name can coexist.

+ +

Attribute Definitions and Promoted Attributes

+ +

Special labels create "label/attribute" definitions, enhancing the organization + and management of attributes. For more details, see Promoted attributes.

+ +

Attribute Inheritance

+ +

Trilium supports attribute inheritance, allowing child notes to inherit + attributes from their parents. For more information, see Attribute inheritance.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance.html new file mode 100644 index 000000000..b47059053 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance.html @@ -0,0 +1,63 @@ + + + + + + + + Attribute Inheritance + + + +
+

Attribute Inheritance

+ +
+

1. Standard Inheritance

+ +

In Trilium, attributes can be automatically inherited by child notes if + they have the isInheritable flag set to true. This + means the attribute (a key-value pair) is applied to the note and all its + descendants.

+ +

Example Use Case

+ +

The archived label can be set to be inheritable, allowing you + to hide a whole subtree of notes from searches and other dialogs by applying + this label at the top level.

+ +

2. Copying Inheritance

+ +

Copying inheritance differs from standard inheritance by using a child: prefix + in the attribute name. This prefix causes new child notes to automatically + receive specific attributes from the parent note. These attributes are + independent of the parent and will persist even if the note is moved elsewhere.

+ +

How to Use

+ + + +

Example

+ +

If a parent note has the label #child:exampleAttribute, all + newly created child notes will inherit the #exampleAttribute label. + This can be useful for setting default properties for notes in a specific + section.

+ +

3. Template Inheritance

+ +

Attributes can also be inherited from templates. + When a new note is created using a template, it inherits the attributes + defined in that template. This is particularly useful for maintaining consistency + across notes that follow a similar structure or function.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.html new file mode 100644 index 000000000..3ba0f2a97 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.html @@ -0,0 +1,73 @@ + + + + + + + + Promoted Attributes + + + +
+

Promoted Attributes

+ +
+

Promoted attributes are attributes which + are considered important and thus are "promoted" onto the main note UI. + See example below:

+

+ +

+

You can see the note having kind of form with several fields. Each of + these is just regular attribute, the only difference is that they appear + on the note itself.

+

Attributes can be pretty useful since they allow for querying and script + automation etc. but they are also inconveniently hidden. This allows you + to select few of the important ones and push them to the front of the user.

+

Now, how do we make attribute to appear on the UI?

+ +

Attribute definition

+ +

Attribute is always name-value pair where both name and value are strings.

+

Attribute definition specifies how should this value be interpreted + - is it just string, or is it a date? Should we allow multiple values or + note? And importantly, should we promote the attribute or not?

+

+ +

+

You can notice tag attribute definition. These "definition" attributes + define how the "value" attributes should behave.

+

So there's one attribute for value and one for definition. But notice + how definition attribute is Inheritable, + meaning that it's also applied to all descendant note. So in a way, this + definition is used for the whole subtree while "value" attributes are applied + only for this note.

+ +

Inverse relation

+ +

Some relations always occur in pairs - my favorite example is on the family. + If you have a note representing husband and note representing wife, then + there might be a relation between those two of isPartnerOf. + This is bidirectional relationship - meaning that if a relation is pointing + from husband to wife then there should be always another relation pointing + from wife to husband.

+

Another example is with parent - child relationship. Again these always + occur in pairs, but in this case it's not exact same relation - the one + going from parent to child might be called isParentOf and the + other one going from child to parent might be called isChildOf.

+

Relation definition allows you to specify such "inverse relation" - for + the relation you just define you specify which is the inverse relation. + Note that in the second example we should have two relation definitions + - one for isParentOf which defines isChildOf as inverse + relation and then second relation definition for isChildOf which + defines isParentOf as inverse relation.

+

What this does internally is that whenever we save a relation which has + defined inverse relation, we check that this inverse relation exists on + the relation target note. Similarly, when we delete relation, we also delete + inverse relation on the target note.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes_image.png new file mode 100644 index 000000000..ecb5f2d6d Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Template.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Template.html new file mode 100644 index 000000000..cf981128e --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Template.html @@ -0,0 +1,81 @@ + + + + + + + + Template + + + +
+

Template

+ +
+

A template in Trilium serves as a predefined structure for other notes, + referred to as instance notes. Assigning a template to a note brings three + main effects:

+
    +
  1. Attribute Inheritance: All attributes from the template + note are inherited by the instance + notes. Even attributes with #isInheritable=false are inherited + by the instance notes, although only inheritable attributes are further + inherited by the children of the instance notes.
  2. +
  3. Content Duplication: The content of the template note + is copied to the instance note, provided the instance note is empty at + the time of template assignment.
  4. +
  5. Child Note Duplication: All child notes of the template + are deep-duplicated to the instance note.
  6. +
+ +

Example

+ +

A typical example would be a "Book" template note, which might include:

+ +

+ Template Example +

+ +

Instance Note

+ +

An instance note is a note related to a template note. This relationship + means the instance note's content is initialized from the template, and + all attributes from the template are inherited.

+

To create an instance note through the UI:

+

+ show child note templates +

+

For the template to appear in the menu, the template note must have the #template label. + Do not confuse this with the ~template relation, which links + the instance note to the template note. If you use workspaces, + you can also mark templates with #workspaceTemplate to display + them only in the workspace.

+

Templates can also be added or changed after note creation by creating + a ~template relation pointing to the desired template note.

+ +

Additional Notes

+ +

From a visual perspective, templates can define #iconClass and #cssClass attributes, + allowing all instance notes (e.g., books) to display a specific icon and + CSS style.

+

Explore the concept further in the demo notes, + including examples like the Relation Map, + Task Manager, and Day Notes.

+

Additionally, see default note title for + creating title templates. Note templates and title templates can be combined + by creating a #titleTemplate for a template note.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes_image.png new file mode 100644 index 000000000..2ea269012 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Bulk actions.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Bulk actions.html new file mode 100644 index 000000000..ae5aa731a --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Bulk actions.html @@ -0,0 +1,30 @@ + + + + + + + + Bulk actions + + + +
+

Bulk actions

+ +
+

Execute script

+ +

For more complex scenarios, it is possible to type in a JavaScript expression + in order to apply the necessary changes.

+

To apply a suffix (- suffix in this example), to the note + title:

+
note.title = note.title + " - suffix";
+

To alter attributes of a note in a bulk action, such as setting the #shareAlias label + to the title of the note:

+
note.setLabel("shareAlias", note.title)
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes.html new file mode 100644 index 000000000..8611432de --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes.html @@ -0,0 +1,53 @@ + + + + + + + + Code Notes + + + +
+

Code Notes

+ +
+

Trilium supports creating "code" notes, i.e. notes which contain some + sort of formal code - be it programming language (C++, JavaScript), structured + data (JSON, XML) or other types of codes (CSS etc.).

+

This can be useful for a few things:

+ +

+ +

+ +

Extra languages

+ +

Trilium supports syntax highlighting for many languages, but by default + displays only some of them (to reduce the number of items). You can add + extra languages in Options -> Code notes.

+ +

Code blocks

+ +

An alternative to the code note is a "code block" - feature of a text + note which can add short snippets of code to the text editor. Starting + with TriliumNext v0.90.12, the code blocks also support syntax highlighting.

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Custom Widgets.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Custom Widgets.html new file mode 100644 index 000000000..8b271c088 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Custom Widgets.html @@ -0,0 +1,118 @@ + + + + + + + + Custom Widgets + + + +
+

Custom Widgets

+ +
+

It's possible to create custom widget in three possible locations where + you can display your custom content.

+

Positions are:

+ + +

Example - word count widget

+ +

Create a code note of type JS frontend and give it a **#widget** label.

+
/*
+ * This defines a custom widget which displays number of words and characters in a current text note.
+ * To be activated for a given note, add label 'wordCount' to the note, you can also make it inheritable and thus activate it for the whole subtree.
+ * 
+ * See it in action in "Books" and its subtree.
+ */
+const TPL = `
+    Word count: 
+    
+
+     
+
+    Character count: 
+    
+`;
+
+class WordCountWidget extends api.NoteContextAwareWidget {
+    static get parentWidget() { return 'center-pane'; }
+
+    get position() { return 100; } // higher value means position towards the bottom/right
+
+    isEnabled() {
+        return super.isEnabled()
+            && this.note.type === 'text'
+            && this.note.hasLabel('wordCount');
+    }
+
+    doRender() {
+        this.$widget = $(TPL);
+        this.$wordCount = this.$widget.find('.word-count');
+        this.$characterCount = this.$widget.find('.character-count');
+        return this.$widget;
+    }
+
+    async refreshWithNote(note) {
+        const {content} = await note.getNoteComplement();
+
+        const text = $(content).text(); // get plain text only
+
+        const counts = this.getCounts(text);
+
+        this.$wordCount.text(counts.words);
+        this.$characterCount.text(counts.characters);
+    }
+
+    getCounts(text) {
+        const chunks = text
+            .split(/[\s-+:,/\\]+/)
+            .filter(chunk => chunk !== '');
+
+        let words;
+
+        if (chunks.length === 1 && chunks[0] === '') {
+            words = 0;
+        }
+        else {
+            words = chunks.length;
+        }
+
+        const characters = chunks.join('').length;
+
+        return {words, characters};
+    }
+
+    async entitiesReloadedEvent({loadResults}) {
+        if (loadResults.isNoteContentReloaded(this.noteId)) {
+            this.refresh();
+        }
+    }
+}
+
+module.exports = WordCountWidget;
+

After you make changes it is necessary to restart Trilium so that the + layout can be rebuilt.

+ +

Example screenshot

+ +

On the bottom you can see the resulting widget:

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Events.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Events.html new file mode 100644 index 000000000..1a1270aab --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Events.html @@ -0,0 +1,70 @@ + + + + + + + + Events + + + +
+

Events

+ +
+

Script notes can be triggered by events. Note + that these are backend events and thus relation need to point to the "JS + backend" code note.

+ +

Global events

+ +

Global events are attached to the script note via label. Simply create + e.g. "run" label with some of these values and script note will be executed + once the event occurs.

+ + +

Entity events

+ +

Other events are bound to some entity, these are defined as relations - + meaning that script is triggered only if note has this script attached + to it through relations (or it can inherit it).

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Script API.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Script API.html new file mode 100644 index 000000000..377897aca --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Script API.html @@ -0,0 +1,30 @@ + + + + + + + + Script API + + + +
+

Script API

+ +
+

Trilium offers a "Script API" that enables scripts to perform various + useful functions. There are two main APIs available:

+ +

Please note that the Script API is currently experimental and may undergo + changes in future updates.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Scripts.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Scripts.html new file mode 100644 index 000000000..d770af7aa --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes/Scripts.html @@ -0,0 +1,100 @@ + + + + + + + + Scripts + + + +
+

Scripts

+ +
+

Trilium supports creating code notes, + i.e. notes which allow you to store some programming code and highlight + it. Special case is JavaScript code notes which can also be executed inside + Trilium which can in conjunction with Script API provide + extra functionality.

+ +

Scripting

+ +

To go further I must explain basic architecture of Trilium - in its essence + it is a classic web application - it has these two main components:

+ +

So we have frontend and backend, each with their own set of responsibilities, + but their common feature is that they both run JavaScript code. Add to + this the fact, that we're able to create JavaScript [[code notes]] and + we're onto something.

+ +

Button use case

+ +

Let's take a look at our demo script (shipped with default Trilium database) + - Task manager. One of the things this script does is adding a button to + the Trilium interface which will allow user to easily add new Task (TODO + item).

+

+ +

+

First take a look at the red circle all the way on the top - this what + we want to achieve - new button in UI which will create new note representing + a task/todo item.

+

Red point below the first one marks the note type we have created for + this script - it's "JavaScript frontend". It's frontend because adding + button to UI is clearly frontend responsibility.

+

In the note content you can see the code which calls one of the API methods, + this one is specifically meant to add new buttons. Code needs to set few + button properties:

+ + +

Action handler

+ +

Saving the note to the database is backend's responsibility, so we immediately + pass control to the backend and ask it to create a note. Once this is done, + we show the newly created note so that the user can set the task title + and maybe some attributes.

+ +

Script execution

+ +

So we have a script which will add the button to the toolbar. But how + can we execute it? One possibility is to click on "play" icon (marked by + red circle). The problem with this is that this UI change is time bound + by Trilium runtime so when we restart Trilium, button won't be there.

+

We need to execute it every time Trilium starts up, but we probably don't + want to have to manually click on play button on every start up.

+

The solution is marked by red circle at the bottom - this note has label #run=frontendStartup - + this is one of the "system" labels which Trilium understands. As you might + guess, this will cause all such labeled script notes to be executed once + Trilium frontend starts up.

+

(#run=frontendStartup does not work for Mobile frontend - + if you want to have scripts running there, give the script #run=mobileStartup label)

+ +

More showcases

+ +

You can see more scripting with explanation in Advanced showcases +

+ +

Events

+ +

See Events.

+ +

Script API

+ +

See Script API.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes_image.png new file mode 100644 index 000000000..f3ebaf673 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Code Notes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Configuration (config.ini or e.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Configuration (config.ini or e.html new file mode 100644 index 000000000..ecef112dd --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Configuration (config.ini or e.html @@ -0,0 +1,49 @@ + + + + + + + + Configuration (config.ini or environment variables) + + + +
+

Configuration (config.ini or environment variables)

+ +
+

Trilium supports configuration via a file named config.ini and + environment variables. Please review the file named config-sample.ini in + the Notes repository to + see what values are supported.

+

You can provide the same values via environment variables instead of the config.ini file, + and these environment variables use the following format:

+
    +
  1. Environment variables should be prefixed with TRILIUM_ and + use underscores to represent the INI section structure.
  2. +
  3. The format is: TRILIUM_<SECTION>_<KEY>=<VALUE> +
  4. +
  5. The environment variables will override any matching values from config.ini
  6. +
+

For example, if you have this in your config.ini:

+
[Network]
+host=localhost
+port=8080
+

You can override these values using environment variables:

+
TRILIUM_NETWORK_HOST=0.0.0.0
+TRILIUM_NETWORK_PORT=9000
+

The code will:

+
    +
  1. First load the config.ini file as before
  2. +
  3. Then scan all environment variables for ones starting with TRILIUM_ +
  4. +
  5. Parse these variables into section/key pairs
  6. +
  7. Merge them with the config from the file, with environment variables taking + precedence
  8. +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Custom Request Handler.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Custom Request Handler.html new file mode 100644 index 000000000..d0108c00c --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Custom Request Handler.html @@ -0,0 +1,110 @@ + + + + + + + + Custom Request Handler + + + +
+

Custom Request Handler

+ +
+

Trilium provides a mechanism for scripts to + open a public REST endpoint. This opens a way for various integrations + with other services - a simple example would be creating new note from + Slack by issuing a slash command (e.g. /trilium buy milk).

+ +

Create note from outside Trilium

+ +

Let's take a look at an example. The goal is to provide a REST endpoint + to which we can send title and content and Trilium will create a note.

+

We'll start with creating a JavaScript backend code note containing:

+
const {req, res} = api;
+const {secret, title, content} = req.body;
+
+if (req.method == 'POST' && secret === 'secret-password') {
+    // notes must be saved somewhere in the tree hierarchy specified by a parent note. 
+    // This is defined by a relation from this code note to the "target" parent note
+    // alternetively you can just use constant noteId for simplicity (get that from "Note Info" dialog of the desired parent note)
+    const targetParentNoteId = api.currentNote.getRelationValue('targetNote');
+    
+    const {note} = api.createTextNote(targetParentNoteId, title, content);
+    const notePojo = note.getPojo();
+
+    res.status(201).json(notePojo);
+}
+else {
+    res.send(400);
+}
+

This script note has also following two attributes:

+ + +

Explanation

+ +

Let's test this by using an HTTP client to send a request:

+
POST http://my.trilium.org/custom/create-note
+Content-Type: application/json
+
+{
+  "secret": "secret-password",
+  "title": "hello",
+  "content": "world"
+}+++++++++++++++++++++++++++++++++++++++++++++++
+

Notice the /custom part in the request path - Trilium considers + any request with this prefix as "custom" and tries to find a matching handler + by looking at all notes which have customRequestHandler label. + Value of this label then contains a regular expression which will match + the request path (in our case trivial regex "create-note").

+

Trilium will then find our code note created above and execute it. api.req, api.res are + set to request and + responseobjects from which we can get details of the request and also + respond.

+

In the code note we check the request method and then use trivial authentication + - keep in mind that these endpoints are by default totally unauthenticated, + and you need to take care of this yourself.

+

Once we pass these checks we will just create the desired note using + Script API.

+ +

Custom resource provider

+ +

Another common use case is that you want to just expose a file note - + in such case you create label customResourceProvider (value + is again path regex).

+

For more information, see Custom Resource Providers.

+ +

Advanced concepts

+ +

api.req and api.res are Express.js objects - you + can always look into its documentation for + details.

+ +

Parameters

+ +

REST request paths often contain parameters in the URL, e.g.:

+
http://my.trilium.org/custom/notes/123
+

The last part is dynamic so the matching of the URL must also be dynamic + - for this reason the matching is done with regular expressions. Following customRequestHandler value + would match it:

+
notes/([0-9]+)
+

Additionally, this also defines a matching group with the use of parenthesis + which then makes it easier to extract the value. The matched groups are + available in api.pathParams:

+
const noteId = api.pathParams[0];
+

Often you also need query params (as in e.g. http://my.trilium.org/custom/notes?noteId=123), + you can get those with standard express req.query.noteId.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Custom Resource Providers.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Custom Resource Providers.html new file mode 100644 index 000000000..a47a4e93d --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Custom Resource Providers.html @@ -0,0 +1,61 @@ + + + + + + + + Custom Resource Providers + + + +
+

Custom Resource Providers

+ +
+

A custom resource provider allows any file imported into Trilium (images, + fonts, stylesheets) to be publicly accessible via a URL.

+

A potential use case for this is to add embed a custom font alongside + a theme.

+ +

Steps for creating a custom resource provider

+ +
    +
  1. Import a file such as an image or a font into Trilium by drag & drop.
  2. +
  3. Select the file and go to the Owned Attributes section.
  4. +
  5. Add the label #customResourceProvider=hello.
  6. +
  7. To test if it is working, use a browser to navigate to <protocol>://<host>/custom/hello (where <protocol> is + either http or https based on your setup, and <host> is + the host or IP to your Trilium server instance). If you are running the + TriliumNext application without a server, use http://localhost:37840 as + the base URL.
  8. +
  9. If everything went well, at the previous step the browser should have + downloaded the file uploaded in the first step.
  10. +
+

Instead of hello, the name can be:

+ + +

Using it in a theme

+ +

For example, if you have a custom font to be imported by the theme, first + upload a font file into Trilium and assign it the #customResourceProvider=fonts/myfont.ttf attribute.

+

Then modify the theme CSS to point to:

+
@font-face {
+	font-family: customFont;
+	src: url("/custom/fonts/myfont.ttf");
+}
+
+div {
+	font-family: customFont;
+}
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database.html new file mode 100644 index 000000000..69afb4127 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database.html @@ -0,0 +1,82 @@ + + + + + + + + Database + + + +
+

Database

+ +
+

Your Trilium data is stored in a SQLite database + which contains all notes, tree structure, metadata, and most of the configuration. + The database file is named document.db and is stored in the + application's default Data directory.

+ +

Demo Notes

+ +

When you run Trilium for the first time, it will generate a new database + containing demo notes. These notes showcase its many features, such as:

+ + +

Restoring Demo Notes

+ +

There are some cases in which you may want to restore the original demo + notes. For example, if you experimented with some of the more advanced + features and want to see the original reference, or if you simply want + to explore the latest version of the demo notes, which might showcase new + features.

+

You can easily restore the demo notes by using Trilium's built-in import + feature by importing them:

+ + +

Manually Modifying the Database

+ +

Trilium provides a lot of flexibility, and with it, opportunities for + advanced users to tweak it. If you need to explore or modify the database + directly, you can use a tool such as SQLite Browser to + work directly on the database file.

+

See Manually altering the database for + more information.

+ +

How to Reset the Database

+ +

If you are experimenting with Trilium and want to return it to its original + state, you can do that by deleting the current database. When you restart + the application, it will generate a new database containing the original + demo notes.

+

To delete the database, simply go to the data directory and + delete the document.db file (and any other files starting with document.db).

+

If you do not need to preserve any configurations that might be stored + in the config.ini file, you can just delete all of the data directory's contents + to fully restore the application to its original state. You can also review + the configuration file + to provide all config.ini values as environment variables instead.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png new file mode 100644 index 000000000..c6681695a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png new file mode 100644 index 000000000..a6bbeaaf9 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png new file mode 100644 index 000000000..32a91fc2f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png new file mode 100644 index 000000000..973cc4d6c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png new file mode 100644 index 000000000..6f32f76ec Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png new file mode 100644 index 000000000..0ef3cef45 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the data.png new file mode 100644 index 000000000..469899ebc Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the data.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.html new file mode 100644 index 000000000..70e91a818 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.html @@ -0,0 +1,65 @@ + + + + + + + + Manually altering the database + + + +
+

Manually altering the database

+ +
+

There are some situations where modifying the SQLite database that Trilium + uses is desirable.

+

If you are doing any advanced development or troubleshooting where you + manually modify the database, you might want to consider creating backups + of your document.db file.

+ +

Modifying it internally using the SQL Console

+ +

The SQL Console is Trilium's built-in database editor.

+

See SQL Console.

+ +

Externally modifying the database

+ +

Sometimes the SQL Console cannot be used (for example if the application + cannot start).

+

When making external modifications, consider closing the desktop application. + If modifying the server database, then stop the service or Docker container.

+ +

Using DB Browser for SQLite

+ +

DB Browser for SQLite is a cross-platform editor that can be used to alter + the database using a graphical user interface.

+

To do so:

+
    +
  1. In the main menu, select File → Open database… and navigate to the database + in the Data directory.
  2. +
  3. Select the Execute SQL tab.
  4. +
  5. Type in the desired SQL statement.
  6. +
  7. Press the "Play" button in the toolbar underneath the "Execute SQL" tab + (or F5 key).
  8. +
  9. Press "Write Changes" in the main toolbar.
  10. +
  11. Close the application or close the database.
  12. +
+

+ +

+ +

Using the SQLite CLI

+ +

First, start the SQLite 3 CLI by specifying the path to the database:

+
sqlite3 ~/.local/share/trilium-data/document.db
+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/1_SQL Console_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/1_SQL Console_image.png new file mode 100644 index 000000000..6f32f76ec Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/1_SQL Console_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/2_SQL Console_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/2_SQL Console_image.png new file mode 100644 index 000000000..c6681695a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/2_SQL Console_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png new file mode 100644 index 000000000..0ef3cef45 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html new file mode 100644 index 000000000..f9d6d674b --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html @@ -0,0 +1,62 @@ + + + + + + + + SQL Console + + + +
+

SQL Console

+ +
+

The SQL Console is Trilium's built-in database editor.

+

It can be accessed by going to the global menu → + Advanced → Open SQL Console.

+

+ +

+ +

Interaction

+ + + +

Saved SQL console

+ +

SQL queries or commands can be saved into a dedicated note.

+

To do so, simply write the query and press the + button. Once saved, the note will appear in Day Notes.

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console_image.png new file mode 100644 index 000000000..32a91fc2f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Default Note Title.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Default Note Title.html new file mode 100644 index 000000000..bf0f0d4ce --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Default Note Title.html @@ -0,0 +1,68 @@ + + + + + + + + Default Note Title + + + +
+

Default Note Title

+ +
+

When a new note is created, its name is by default "new note". In some + cases, it can be desirable to have a different or even a dynamic default + note title.

+

For this use case, Trilium (since v0.52) supports #titleTemplate + label. You can create such a label for a given note, assign it a value, + and this value will be used as a default title when creating child notes. + As with other labels, you can make it inheritable to apply recursively, + and you can even place it on the root note to have it applied globally + everywhere.

+

As an example use case, imagine you collect books you've read in a given + year like this:

+ +

Now, to the parent note "2022 Books" you can assign label #titleTemplate="[Author name]: [Book title], [Publication year]".

+

And all children of "2022 Books" will be created with initial title "[Author + name]: [Book title], [Publication year]". There's no artificial intelligence + here, the idea is to just prompt you to manually fill in the pieces of + information into the note title by yourself.

+ +

Dynamic value

+ +

The value of #titleTemplate is evaluated at the point of note's + creation as a JavaScript string, which means it can be enriched with the + help of JS string interpolation with dynamic data.

+

As an example, imagine you collect server outage incidents and write some + notes. It looks like this:

+ +

You can automatize the date assignment by assigning a label #titleTemplate="${now.format('YYYY-MM-DD')}: " to + the parent note "Incidents". Whenever a new child note is created, the + title template is evaluated with the injected now object.

+

Second variable injected is parentNote, + an example could be #titleTemplate="${parentNote.getLabelValue('authorName')}'s literary works".

+

See also [[template]] which provides + similar capabilities, including default note's content.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/ETAPI (REST API).html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/ETAPI (REST API).html new file mode 100644 index 000000000..083d4b678 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/ETAPI (REST API).html @@ -0,0 +1,44 @@ + + + + + + + + ETAPI (REST API) + + + +
+

ETAPI (REST API)

+ +
+

ETAPI is Trilium's public/external REST API. It is available since Trilium + v0.50.

+

The documentation is in OpenAPI format, available here.

+

trilium-py is a third-party + Python implementation for ETAPI client, you can use Python to communicate + with Trilium.

+ +

Authentication

+ +

All operations have to be authenticated using a token. You can get this + token either from Options -> ETAPI or programmatically using the /auth/login REST + call (see the spec):

+
GET https://myserver.com/etapi/app-info
+Authorization: ETAPITOKEN
+

Alternatively, since 0.56 you can also use basic auth format:

+
GET https://myserver.com/etapi/app-info
+Authorization: Basic BATOKEN
+ +

Basic Auth is meant to be used with tools which support only basic auth.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map.html new file mode 100644 index 000000000..58ca2cd8f --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map.html @@ -0,0 +1,47 @@ + + + + + + + + Note Map + + + +
+

Note Map

+ +
+

Note map is a visualisation of connections between notes.

+

This provides an insight into a structure ("web") of notes.

+

There are two types of note map:

+ +

Link Map

+ +

Shows relations between notes:

+

+ +

+ +

Tree Map

+ +

Shows hierarchical map of notes:

+

+ +

+ +

See also

+ +

Relation map is a similar concept, with + some differences:

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map_image.png new file mode 100644 index 000000000..2d41fd6c6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map.html new file mode 100644 index 000000000..2fe0bd15a --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map.html @@ -0,0 +1,103 @@ + + + + + + + + Relation Map + + + +
+

Relation Map

+ +
+

Relation map is a type of note which + visualizes notes and their relations. See + an example:

+ +

Development process demo

+ +

This is a basic example how you can create simple diagram using relation + maps:

+

+ +

+

And this is how you can create it:

+

+ +

+

We start completely from scratch by first creating new note called "Development + process" and changing its type to "Relation map". After that we create + new notes one by one and place them by clicking into the map. We also drag + relationsbetween notes and name them. That's all!

+

Items on the map - "Specification", "Development", "Testing" and "Demo" + are actually notes which have been created under "Development process" + note - you can click on them and write some content. Connections between + notes are called "relations".

+ +

Family demo

+ +

This is more complicated demo using some advanced concepts. Resulting + diagram is here:

+

+ +

+

This is how you get to it:

+

+ +

+

There are several steps here:

+ +

Relation definitions mentioned above come from "Person template" note + which is assigned to any child of "My Family Tree" relation note. You can + play with the whole thing in the demo notes.

+ +

Details

+ +

You can specify which relations should be displayed with comma delimited + names of relations in displayRelations label.

+

Alternatively, you can specify comma delimited list of relation names + in hideRelations which will display all relations, except for + the ones defined in the label.

+ +

See also

+ + +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map_relation-map-.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map_relation-map-.gif new file mode 100644 index 000000000..4a02dbeea Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map_relation-map-.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html new file mode 100644 index 000000000..b4a2e423d --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html @@ -0,0 +1,174 @@ + + + + + + + + Sharing + + + +
+

Sharing

+ +
+

Trilium allows you to share selected notes as publicly accessible read-only + documents. This feature is particularly useful for publishing content directly + from your Trilium notes, making it accessible to others online.

+ +

Prerequisites

+ +

To use the sharing feature, you must have a server installation of + Trilium. This is necessary because the notes will be hosted from the server.

+ +

How to Share a Note

+ +
    +
  1. +

    Enable Sharing: To share a note, toggle the Shared switch + within the note's interface. Once sharing is enabled, an URL will appear, + which you can click to access the shared note.

    +

    + Share Note +

    +
  2. +
  3. +

    Access the Shared Note: The link provided will open the + note in your browser. If your server is not configured with a public IP, + the URL will refer to localhost (127.0.0.1).

    +

    + Shared Note Example +

    +
  4. +
+ +

Sharing a Note Subtree

+ +

When you share a note, you actually share the entire subtree of notes + beneath it. If the note has child notes, they will also be included in + the shared content. For example, sharing the "Formatting" subtree will + display a page with basic navigation for exploring all the notes within + that subtree.

+

+ Shared Subtree Example +

+ +

Viewing All Shared Notes

+ +

You can view a list of all shared notes by clicking on "Show Shared Notes + Subtree." This allows you to manage and navigate through all the notes + you have made public.

+ +

Security Considerations

+ +

Shared notes are published on the open internet and can be accessed by + anyone with the URL. The URL's randomness does not provide security, so + it is crucial not to share sensitive information through this feature.

+ +

Password Protection

+ +

To protect shared notes with a username and password, you can use the #shareCredentials attribute. + Add this label to the note with the format #shareCredentials="username:password". + To protect an entire subtree, make sure the label is inheritable.

+ +

Advanced Sharing Options

+ + +

Customizing the Appearance of Shared Notes

+ +

The default shared page is basic in design, but you can customize it using + your own CSS:

+ + +

Adding JavaScript

+ +

You can inject custom JavaScript into the shared note using the ~shareJs relation. + This allows you to access note attributes or traverse the note tree using + the fetchNote() API, which retrieves note data based on its + ID.

+

Example:

+
const currentNote = await fetchNote();
+const parentNote = await fetchNote(currentNote.parentNoteIds[0]);
+
+for (const attr of parentNote.attributes) {
+    console.log(attr.type, attr.name, attr.value);
+}
+

Creating Human-Readable URL Aliases

+ +

Shared notes typically have URLs like http://domain.tld/share/knvU8aJy4dJ7, + where the last part is the note's ID. You can make these URLs more user-friendly + by adding the #shareAlias label to individual notes (e.g., #shareAlias=highlighting). + This will change the URL to http://domain.tld/share/highlighting.

+

Important:

+
    +
  1. Ensure that aliases are unique.
  2. +
  3. Using slashes (/) within aliases to create subpaths is not + supported.
  4. +
+ +

Viewing and Managing Shared Notes

+ +

All shared notes are grouped under an automatically managed "Shared Notes" + section. From here, you can view, share, or unshare notes by moving or + cloning them within this section.

+

+ Shared Notes List +

+ +

Setting a Custom Favicon

+ +

To customize the favicon for your shared pages, create a relation ~shareFavicon pointing + to a file note containing the favicon (e.g., in .ico format).

+ +

Sharing a Note as the Root

+ +

You can designate a specific note or folder as the root of your shared + content by adding the #shareRoot label. This note will be linked + when visiting [http://domain.tld/share](http://domain/share), + making it easier to use Trilium as a fully-fledged website. Consider combining + this with the #shareIndex label, which will display a list of + all shared notes.

+ +

Additional Options

+ + + +

Limitations

+ +

While the sharing feature is powerful, it has some limitations:

+ +

Some of these limitations may be addressed in future updates.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/1_Serving directly the conte.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/1_Serving directly the conte.png new file mode 100644 index 000000000..981a43146 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/1_Serving directly the conte.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the conte.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the conte.png new file mode 100644 index 000000000..bab0f97f5 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the conte.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o.html new file mode 100644 index 000000000..8824a588b --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o.html @@ -0,0 +1,55 @@ + + + + + + + + Serving directly the content of a note + + + +
+

Serving directly the content of a note

+ +
+

When accessing a shared note, Trilium will render it as a web page. Sometimes + it's desirable to serve the content directly so that it can be used in + a script or downloaded by the user.

+ + + + + + + + + + + + + +
A note displayed as a web page (HTML)A note displayed as a raw format
+ + + +
+ +

By adding an attribute to the note

+ +

Simply add the #shareRaw attribute and the note will always + be rendered raw when accessed from the share URL.

+ +

By altering the URL

+ +

Append ?raw to the URL to display a note in its raw format + regardless of whether the #shareRaw attribute is added on the + note.

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/Custom-widget image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/Custom-widget image.png new file mode 100644 index 000000000..768dbdb6b Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/Custom-widget image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmark-folder.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmark-folder.png new file mode 100644 index 000000000..4cac45698 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmark-folder.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmarks.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmarks.gif new file mode 100644 index 000000000..2fdba3f03 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmarks.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmarks.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmarks.png new file mode 100644 index 000000000..2d78ee1a1 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/bookmarks.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/button-script.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/button-script.png new file mode 100644 index 000000000..466ff32ec Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/button-script.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/canvas-note-image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/canvas-note-image.png new file mode 100644 index 000000000..4ad24adf4 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/canvas-note-image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/chrome-trilium-web-clipper.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/chrome-trilium-web-clipper.png new file mode 100644 index 000000000..f1ac0e4e0 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/chrome-trilium-web-clipper.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/code-note.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/code-note.png new file mode 100644 index 000000000..3e85223d3 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/code-note.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-clone.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-clone.gif new file mode 100644 index 000000000..88052f0ad Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-clone.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-external-link.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-external-link.gif new file mode 100644 index 000000000..2990fdf61 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-external-link.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-link-to-note.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-link-to-note.gif new file mode 100644 index 000000000..e2e2ab913 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/create-link-to-note.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/custom-widget-image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/custom-widget-image.png new file mode 100644 index 000000000..768dbdb6b Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/custom-widget-image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/cut-to-subnote.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/cut-to-subnote.gif new file mode 100644 index 000000000..69c7ce4dc Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/cut-to-subnote.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/dark-theme.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/dark-theme.png new file mode 100644 index 000000000..554fc628a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/dark-theme.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/drag-and-drop.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/drag-and-drop.gif new file mode 100644 index 000000000..ba86530c0 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/drag-and-drop.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/error-logs-export-subtree.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/error-logs-export-subtree.png new file mode 100644 index 000000000..3b9e7bf69 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/error-logs-export-subtree.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/error-logs-firefox-context.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/error-logs-firefox-context.png new file mode 100644 index 000000000..f1dc1861a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/error-logs-firefox-context.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/hide-archived.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/hide-archived.png new file mode 100644 index 000000000..547891a6b Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/hide-archived.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/home-button.svg b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/home-button.svg new file mode 100644 index 000000000..2136cb48d --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/home-button.svg @@ -0,0 +1,18 @@ + + + + button + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/jump-to.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/jump-to.gif new file mode 100644 index 000000000..9521c9a8e Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/jump-to.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-export-note.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-export-note.gif new file mode 100644 index 000000000..4162351fd Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-export-note.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-export-subtree.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-export-subtree.gif new file mode 100644 index 000000000..a4cf33796 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-export-subtree.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-file-import.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-file-import.gif new file mode 100644 index 000000000..1a3eba861 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-file-import.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-inline-import.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-inline-import.gif new file mode 100644 index 000000000..b7265c6e9 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/markdown-inline-import.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/math.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/math.gif new file mode 100644 index 000000000..810784d93 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/math.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mermaid.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mermaid.png new file mode 100644 index 000000000..1c48d2aa6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mermaid.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mobile-smartphone.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mobile-smartphone.png new file mode 100644 index 000000000..43a04b896 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mobile-smartphone.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mobile-tablet.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mobile-tablet.png new file mode 100644 index 000000000..aa18da05a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/mobile-tablet.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/move-note-with-keyboard.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/move-note-with-keyboard.gif new file mode 100644 index 000000000..4f4227953 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/move-note-with-keyboard.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-hoisting.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-hoisting.gif new file mode 100644 index 000000000..1bc019284 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-hoisting.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-icon-change.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-icon-change.png new file mode 100644 index 000000000..b0133a689 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-icon-change.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-icon-gallery.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-icon-gallery.png new file mode 100644 index 000000000..c0cb7f031 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-icon-gallery.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-map.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-map.png new file mode 100644 index 000000000..ee7ef932a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-map.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-revisions.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-revisions.png new file mode 100644 index 000000000..d2bfe1d4c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/note-revisions.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/promoted-attributes-queen.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/promoted-attributes-queen.png new file mode 100644 index 000000000..3940c5239 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/promoted-attributes-queen.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/promoted-attributes.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/promoted-attributes.png new file mode 100644 index 000000000..2e40dcbb6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/promoted-attributes.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/protecting-note.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/protecting-note.gif new file mode 100644 index 000000000..41f663532 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/protecting-note.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/recent-notes.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/recent-notes.gif new file mode 100644 index 000000000..2914db2b7 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/recent-notes.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-dev-process.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-dev-process.png new file mode 100644 index 000000000..20429151e Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-dev-process.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-family-demo.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-family-demo.gif new file mode 100644 index 000000000..b66dc05f4 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-family-demo.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-family.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-family.png new file mode 100644 index 000000000..39788216a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/relation-map-family.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/saved-search-image.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/saved-search-image.gif new file mode 100644 index 000000000..6f9433b9f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/saved-search-image.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/saved-search.gif b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/saved-search.gif new file mode 100644 index 000000000..051b1cd6e Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/saved-search.gif differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/screenshot.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/screenshot.png new file mode 100644 index 000000000..479906b1b Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/screenshot.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-multiple-notes-web.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-multiple-notes-web.png new file mode 100644 index 000000000..434d44ef0 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-multiple-notes-web.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-single-note-web.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-single-note-web.png new file mode 100644 index 000000000..c03697e67 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-single-note-web.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-single-note.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-single-note.png new file mode 100644 index 000000000..4c1ea4297 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/share-single-note.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/shared-list.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/shared-list.png new file mode 100644 index 000000000..1308b502c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/shared-list.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/split.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/split.png new file mode 100644 index 000000000..bb58e1834 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/split.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/steel-blue.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/steel-blue.png new file mode 100644 index 000000000..9085c3d17 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/steel-blue.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-config.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-config.png new file mode 100644 index 000000000..1c16d3267 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-config.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-in-progress.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-in-progress.png new file mode 100644 index 000000000..59dd79d29 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-in-progress.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-init.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-init.png new file mode 100644 index 000000000..8f0d7aa81 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/sync-init.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/task-manager.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/task-manager.png new file mode 100644 index 000000000..e83574548 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/task-manager.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/template-create-instance-n.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/template-create-instance-n.png new file mode 100644 index 000000000..b89f28afc Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/template-create-instance-n.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/template.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/template.png new file mode 100644 index 000000000..be0a9f085 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/template.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-formatting-bloc.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-formatting-bloc.png new file mode 100644 index 000000000..5414b9bc7 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-formatting-bloc.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-formatting-inli.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-formatting-inli.png new file mode 100644 index 000000000..5d18495f9 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-formatting-inli.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-image.png new file mode 100644 index 000000000..d88b6dacc Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Attachments/text-notes-image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png new file mode 100644 index 000000000..7a30a84df Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png new file mode 100644 index 000000000..d2698b715 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png new file mode 100644 index 000000000..0c9f26de0 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png new file mode 100644 index 000000000..d23b671da Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png new file mode 100644 index 000000000..c1a3e8124 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png new file mode 100644 index 000000000..530d76afb Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png new file mode 100644 index 000000000..9f693475f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png new file mode 100644 index 000000000..675a068aa Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.html new file mode 100644 index 000000000..49b9a3d29 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.html @@ -0,0 +1,43 @@ + + + + + + + + Evernote + + + +
+

Evernote

+ +
+

Trilium can import ENEX files which are used by Evernote for backup/export. + One ENEX file represents content (notes and resources) of one notebook.

+ +

Export ENEX from Evernote

+ +

To export ENEX file, you need to have a legacy desktop version + of Evernote (i.e. not web/mobile). Right click on notebook and select export + and follow the wizard.

+ +

Import ENEX in Trilium

+ +

Once you have ENEX file, you can import it to Trilium. Right click on + some note (to which you want to import the file), click on "Import" and + select the ENEX file.

+

After importing the ENEX file, go over the imported notes and resources + to be sure the import went well, and you didn't lose any data.

+ +

Limitations

+ +

All resources (except for images) are created as note's attachments.

+

HTML inside ENEX files is not exactly valid so some formatting maybe broken + or lost. You can report major problems into Trilium issue tracker. + %%{WARNING}%%

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Markdown.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Markdown.html new file mode 100644 index 000000000..9f6b4b04f --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Markdown.html @@ -0,0 +1,78 @@ + + + + + + + + Markdown + + + +
+

Markdown

+ +
+

Trilium Notes supports importing Markdown restricted to the CommonMark specification (where + tables are not supported)

+ +

Import

+ + +

Clipboard import

+ +

If you want to import just a chunk of markdown from clipboard, you can + do it from editor block menu:

+

+ +

+ +

File import

+ +

You can also import Markdown files from files:

+ +

[[gifs/markdown-file-import.gif]]

+

+ +

+ +

Export

+ + +

Subtree export

+ +

You can export whole subtree to ZIP archive which will have directory + structured modelled after subtree structure:

+

+ +

+ +

Single note export

+ +

If you want to export just single note without its subtree, you can do + it from Note actions menu:

+

+ +

+ +

Exporting protected notes

+ +

If you want to export protected notes, enter a protected session first! + This will export the notes in an unencrypted form, so if you reimport into + Trilium, make sure to re-protect these notes.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/OneNote.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/OneNote.html new file mode 100644 index 000000000..23f5fe9cd --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/OneNote.html @@ -0,0 +1,113 @@ + + + + + + + + OneNote + + + +
+

OneNote

+ +
+

This page describes a method to migrate via EverNote Legacy, but this app is no longer available/working. +

+ +

Prep Onenote notes for best compatibility

+ + + +

Migration Procedure

+ + +

Import into Evernote from OneNote:

+ + +

If exporting all sections at a time, they will not be grouped in folders + - they will all be added to a single folder, but the order will be kept, + so you can re-group into folders after importing to Trilium

+ +

Export from Evernote

+ + + +

Cleanup enex file (optional)

+ + + +

Import into Trilium

+ + + +

Other importing notes:

+ + +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Keyboard Shortcuts.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Keyboard Shortcuts.html new file mode 100644 index 000000000..8069a42d9 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Keyboard Shortcuts.html @@ -0,0 +1,141 @@ + + + + + + + + Keyboard Shortcuts + + + +
+

Keyboard Shortcuts

+ +
+

This is supposed to be a complete list of keyboard shortcuts. Note that + some of these may work only in certain contexts (e.g. in tree pane or note + editor).

+

It is also possible to configure most keyboard shortcuts in Options -> + Keyboard shortcuts. Using global: prefix, you can assign a shortcut + which will work even without Trilium being in focus (requires app restart + to take effect).

+ +

Note navigation

+ + +

See demo of some of these features in note navigation.

+ +

Tabs

+ + +

Only in desktop (electron build):

+ + +

Creating notes

+ + + +

Moving / cloning notes

+ + + +

Editing notes

+ +

Trilium uses CKEditor 5 for the text notes and + CodeMirror 5 for code notes. + Check the documentation of these projects to see all their built-in keyboard + shortcuts.

+ + +

Runtime shortcuts

+ +

These are hooked in Electron to be similar to native browser keyboard + shortcuts.

+ + +

Other

+ + +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png new file mode 100644 index 000000000..2ea269012 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Workspace_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Workspace_image.png new file mode 100644 index 000000000..ae10ee7cb Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Workspace_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Bookmarks.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Bookmarks.html new file mode 100644 index 000000000..1a437ade1 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Bookmarks.html @@ -0,0 +1,34 @@ + + + + + + + + Bookmarks + + + +
+

Bookmarks

+ +
+

To easily access selected notes, you can bookmark them. See demo:

+

+ +

+ +

Bookmark folder

+ +

Space in the left panel is limited, and you might want to bookmark many + items. One possible solution is to bookmark a folder, so it shows its children:

+

+ +

+

To do this, you need to add a #bookmarkFolder label to the + note.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Hoisting.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Hoisting.html new file mode 100644 index 000000000..42229dd03 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Hoisting.html @@ -0,0 +1,30 @@ + + + + + + + + Note Hoisting + + + +
+

Note Hoisting

+ +
+

Hoisting is a standard outliner feature which allows you to focus on (or + "zoom into") a specific note and its subtree by hiding all parent and sibling + notes. Demo:

+

+ +

+

In addition to showing only this subtree, this also narrows both full + text search and “jump to note” to just + notes present in hoisted subtree.

+

See also Workspace which extends this feature.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation.html new file mode 100644 index 000000000..c191b89ca --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation.html @@ -0,0 +1,53 @@ + + + + + + + + Note Navigation + + + +
+

Note Navigation

+ +
+

One of the Trilium's goals is to provide fast and comfortable navigation + between notes.

+ +

Backwards and forward

+ +

You can use alt-left and alt-right to move back and forward in history + of viewed pages.

+

This works identically to browser backwards / forwards, it's actually + using built-in browser support for this.

+

+ +

+ +

Jump to note

+ +

This is useful to quickly find and view arbitrary note - click on Jump to button + on the top or press CTRL-J. Then type part of the note name + and autocomplete will help you pick the desired note.

+

+ +

+ +

Recent notes

+ +

Jump to note also has the ability to show the list of recently viewed + / edited notes and quickly jump to it.

+

To access this functionality, click on Jump to button on the + top. By default, (when nothing is entered into autocomplete), this dialog + will show the list of recent notes.

+

Alternatively you can click on the "time" icon on the right.

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation_image.png new file mode 100644 index 000000000..2ea269012 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Search.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Search.html new file mode 100644 index 000000000..da084d03f --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Search.html @@ -0,0 +1,189 @@ + + + + + + + + Search + + + +
+

Search

+ +
+

Local Search

+ +

Local search allows you to search within the currently displayed note. + To initiate a local search, press CTRL-F. If using a web browser, this + will be handled by the browser's native search functionality. In the desktop + (electron) version, a separate dialog will apear.

+ +

Note Search

+ +

Note search enables you to find notes by searching for text in the title, + content, or attributes of + the notes. You also have the option to save your searches, which will create + a special search note which is visible on your navigation tree and contains + the search results as sub-items.

+

To search for notes, click on the magnifying glass icon on the toolbar + or press the CTRL-S keyboard shortcut.

+ +

Simple Note Search Examples

+ + + +

Advanced Use Cases

+ + + +

Search with Note Properties

+ +

Notes have properties that can be used in searches, such as noteId, dateModified, dateCreated, isProtected, type, title, text, content, rawContent, ownedLabelCount, labelCount, ownedRelationCount, relationCount, ownedRelationCountIncludingLinks, relationCountIncludingLinks, ownedAttributeCount, attributeCount, targetRelationCount, targetRelationCountIncludingLinks, parentCount, childrenCount, isArchived, contentSize, noteSize, + and revisionCount.

+

These properties can be accessed via the note. prefix, e.g., note.type = code AND note.mime = 'application/json'.

+ +

Order by and Limit

+ +
#author=Tolkien orderBy #publicationDate desc, note.title limit 10
+

This example will:

+
    +
  1. Find notes with the author label "Tolkien".
  2. +
  3. Order the results by publicationDate in descending order.
  4. +
  5. Use note.title as a secondary ordering if publication dates + are equal.
  6. +
  7. Limit the results to the first 10 notes.
  8. +
+ +

Negation

+ +

Some queries can only be expressed with negation:

+
#book AND not(note.ancestor.title = 'Tolkien')
+

This query finds all book notes not in the "Tolkien" subtree.

+ +

Under the Hood

+ + +

Label and Relation Shortcuts

+ +

The "full" syntax for searching by labels is:

+
note.labels.publicationYear = 1954
+

For relations:

+
note.relations.author.title *=* Tolkien
+

However, common label and relation searches have shortcut syntax:

+
#publicationYear = 1954
+#author.title *=* Tolkien
+

Separating Full-Text and Attribute Parts

+ +

Search syntax allows combining full-text search with attribute-based search + seamlessly. For example, tolkien #book contains:

+
    +
  1. Full-text tokens - tolkien +
  2. +
  3. Attribute expressions - #book +
  4. +
+

Trilium detects the separation between full text search and attribute/property + search by looking for certain special characters or words that denote attributes + and properties (e.g., #, ~, note.). If you need to include these in full-text + search, escape them with a backslash so they are processed as regular text:

+
"note.txt" 
+\#hash 
+#myLabel = 'Say "Hello World"'
+

Escaping Special Characters

+ +

Special characters can be enclosed in quotes or escaped with a backslash + to be used in full-text search:

+
"note.txt"
+\#hash
+#myLabel = 'Say "Hello World"'
+

Three types of quotes are supported: single, double, and backtick.

+ +

Type Coercion

+ +

Label values are technically strings but can be coerced for numeric comparisons:

+
note.dateCreated =* '2019-05'
+

This finds notes created in May 2019. Numeric operators like #publicationYear >= 1960 convert + string values to numbers for comparison.

+ +

Auto-Trigger Search from URL

+ +

You can open Trilium and automatically trigger a search by including the + search url encoded string + in the URL:

+

http://localhost:8080/#?searchString=abc +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Tree Concepts.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Tree Concepts.html new file mode 100644 index 000000000..228cb0fe8 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Tree Concepts.html @@ -0,0 +1,54 @@ + + + + + + + + Tree Concepts + + + +
+

Tree Concepts

+ +
+

This page explains the basic concepts related to the tree structure of + notes in TriliumNext.

+ +

Note

+ +

A note is the central entity in TriliumNext. For more details, see Note.

+ +

Branch

+ +

A branch describes the placement of a note within the note tree. Essentially, + it is a tuple of parentNoteId and noteId, indicating + that the given note is placed as a child under the specified parent note.

+

Each note can have multiple branches, meaning any note can be placed in + multiple locations within the tree. This concept is referred to as " + cloning."

+ +

Prefix

+ +

A prefix is a branch-specific title modifier for a note. If you place + your note in two different locations within the tree and want to alter + the title slightly in one of those placements, you can use a prefix.

+

To edit a prefix, right-click on the note in the tree pane and select + "Edit branch prefix."

+

The prefix is not part of the note itself and is not encrypted when the + note is protected. This can be useful if you want part of the title to + remain visible in the tree for easier navigation, even when the note is + protected.

+ +

Subtree

+ +

A subtree consists of a particular note (the subtree root) and all its + children and descendants. Some operations, such as exporting, work on entire + subtrees.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Tree Manipulation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Tree Manipulation.html new file mode 100644 index 000000000..8f78cb127 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Tree Manipulation.html @@ -0,0 +1,54 @@ + + + + + + + + Tree Manipulation + + + +
+

Tree Manipulation

+ +
+

This page explains how to manipulate the note tree in TriliumNext, focusing + on moving notes.

+ +

Drag and Drop

+ +

+ Drag and drop exampleYou can easily rearrange the note tree by dragging and dropping notes, + as demonstrated in the example above.

+ +

Keyboard Manipulation

+ +

+ Example of using keyboard keys to move a noteTrilium offers efficient keyboard-based manipulation using the following + shortcuts:

+ + +

Context Menu

+ +

You can also move notes using the familiar cut and paste functions available + in the context menu, or with the associated keyboard shortcuts: CTRL-C ( + copy), CTRL-X (cut) and CTRL-V (paste).

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace.html new file mode 100644 index 000000000..f39ff8b8e --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace.html @@ -0,0 +1,64 @@ + + + + + + + + Workspace + + + +
+

Workspace

+ +
+

Workspace is a concept built up on top of note hoisting. + It is based on the idea that a user has several distinct spheres of interest. + An example might be "Personal" and "Work", these two spheres are quite + distinct and don't interact together. When I focus on Work, I don't really + care about personal notes.

+

So far workspace consists of these features:

+ + +

How to use workspaces

+ +

Let's say you have identified the workspaces and their subtrees. Define + on the root of this subtree following labels:

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace_image.png new file mode 100644 index 000000000..2401cf083 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note.html new file mode 100644 index 000000000..dbf437cff --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note.html @@ -0,0 +1,93 @@ + + + + + + + + Note + + + +
+

Note

+ +
+

Note is a central entity in Trilium. Main attributes of note are title + and content.

+ +

Note types

+ + +

In Trilium there's no specific "folder" note type. Any note can have children + and thus be a folder.

+ +

Root note

+ +

There's one special note called "root note" which is root of the note + tree. All other notes are placed below it in the structure.

+ +

Tree structure

+ +

Importantly, note itself doesn't carry information on its placement in + note tree. See cloning for details.

+

Tree structure of notes can resemble file system - but compared to that + notes in Trilium can act as both file and directory - meaning that note + can both have its own content and have children. "Leaf note" is a note + which doesn't have any children.

+ +

Deleting / undeleting notes

+ +

When you delete a note in Trilium, it is actually only marked for deletion + (soft-delete) - the actual content, title, attributes etc. are not deleted, + only hidden.

+

Within (by default) 7 days, it is possible to undelete these soft-deleted + notes - open Recent Changes dialog, and you will see a list of all modified + notes including the deleted ones. Notes available for undeletion have a + link to do so. This is kind of "trash can" functionality known from e.g. + Windows.

+

Clicking an undelete will recover the note, it's content and attributes + - note should be just as before being deleted. This action will also undelete + note's children which have been deleted in the same action.

+

To be able to undelete a note, it is necessary that deleted note's parent + must be undeleted (otherwise there's no place where we can undelete it + to). This might become a problem when you delete more notes in succession + - the solution is then undelete in the reverse order of your deletion.

+

After the 7 days (configurable) the notes will be "erased" - their title, + content, revisions and attributes will be erased, and it will not be possible + anymore to recover them (unless you restore backup).

+ +

See also

+ + +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Export as PDF_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Export as PDF_image.png new file mode 100644 index 000000000..610f54c67 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Export as PDF_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Images_image.png new file mode 100644 index 000000000..0167e759b Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Right-to-Left Support_imag.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Right-to-Left Support_imag.png new file mode 100644 index 000000000..42b9b58e6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/1_Right-to-Left Support_imag.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/2_Right-to-Left Support_imag.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/2_Right-to-Left Support_imag.png new file mode 100644 index 000000000..e949d074e Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/2_Right-to-Left Support_imag.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/3_Right-to-Left Support_imag.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/3_Right-to-Left Support_imag.png new file mode 100644 index 000000000..7ac5d7bc4 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/3_Right-to-Left Support_imag.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/4_Right-to-Left Support_imag.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/4_Right-to-Left Support_imag.png new file mode 100644 index 000000000..20864f8af Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/4_Right-to-Left Support_imag.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Archived Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Archived Notes.html new file mode 100644 index 000000000..f3508b293 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Archived Notes.html @@ -0,0 +1,31 @@ + + + + + + + + Archived Notes + + + +
+

Archived Notes

+ +
+

Archived notes are notes which have archived attribute - + either directly or inherited.

+

Such notes are then by default not shown in the autocomplete and in the + full text search.

+

This can be useful for notes which are no longer very useful but still + valuable enough to keep around without them getting too much in the way.

+

You can control whether archived notes are displayed in the note tree + with a setting:

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Attachments.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Attachments.html new file mode 100644 index 000000000..8e3f8785e --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Attachments.html @@ -0,0 +1,35 @@ + + + + + + + + Attachments + + + +
+

Attachments

+ +
+

A note in Trilium can own one or more + attachments, which can be either images or files. These attachments can + be displayed or linked within the note that owns them.

+

This can be especially useful to include dependencies for your scripts. + The Weight Tracker shows + how to use chartjs which is attached to + the script note.

+

Each note exclusively owns its attachments, meaning attachments cannot + be shared or linked from one note to another. If an attachment link is + copied to a different note, the attachment itself is duplicated, and the + copies are managed independently thereafter.

+

Attachments, especially image files, are the recommended method for embedding + visuals in notes. It is important to link image attachments within the + text of the owning note; otherwise, they will be automatically deleted + after a configurable timeout period if not referenced.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Cloning Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Cloning Notes.html new file mode 100644 index 000000000..a874ff21b --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Cloning Notes.html @@ -0,0 +1,137 @@ + + + + + + + + Cloning Notes + + + +
+

Cloning Notes

+ +
+

Motivation

+ +

Trilium's core feature is the ability to structure your notes into hierarchical + tree-like structure.

+

It is expected then that you'll have an elaborate and deep note hierarchy + - each subtree will represent a more refined and specialized view of your + knowledge base.

+

This is a pretty powerful approach, but it also carries a hidden assumption + that each "subtopic" is "owned" by one parent. I'll illustrate this with + an example - let's say my basic structure is this:

+ +

Now, I'm starting to learn about Bash and + would like to create notes related to this topic. But now I'm facing a + problem of where to categorize this. The issue here is that Bash is both + a programming language and a tool (shell) very much tied into Linux. It + seems it belongs to both of these, I can't (and don't want to) choose one + over the other.

+ +

Solution

+ +

The solution to the problem shown above is to allow notes to have multiple + parents.

+

I call these "clones", but that is a bit misleading - there's no original + and cloned note - the notes in both of the parents categories are identical.

+

Another misleading thing about "cloning" is that it suggests that a copy + of the note has been made. That's not really true, the note itself stays + in just one original, it is just referenced in multiple places in the tree + hierarchy. So changing it in one category changes it in all the others, + because they're all the same note.

+

Here's the final structure with cloning:

+ +

So now the "Bash" subtree appears on multiple locations in the hierarchy. + Both the Bash subtrees are the same and contain the same sub-categories + and notes.

+ +

Demo

+ +

+ +

+

In the demo, you can see how a clone can be created using the context + menu. It's possible to do this also using the Add Link dialog or with CTRL+C + and CTRL+V keyboard shortcuts.

+

As seen in the demo, you can view the list of all available clones in + the "Note Paths" tab in the Ribbon toolbar.

+

Titles of cloned notes in the tree view have an asterisk to the right + to easily see that the note is also placed into some other location.

+ +

Prefix

+ +

Since notes can be categorized into multiple places, it's recommended + to choose a generalized name that fits into all locations instead of something + more specific to avoid confusion. In some cases this isn't possible so + Trilium provides "branch prefixes", which is shown before the note name + in the tree and as such provides a specific kind of context. The prefix + is location specific, so it's displayed only in the tree pane.

+ +

Deleting notes/clones

+ +

With clones, it might not be immediately obvious how deleting works.

+

If you try to delete a note, it works like this:

+
    +
  1. if the note has multiple clones, delete just this clone and leave the + actual note (and its other clones) as it is.
  2. +
  3. if this note doesn't have any other clones, delete the note +
      +
    • Run the whole process starting with 1. on all note's children notes
    • +
    +
  4. +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF.html new file mode 100644 index 000000000..2b9620089 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF.html @@ -0,0 +1,59 @@ + + + + + + + + Export as PDF + + + +
+

Export as PDF

+ +
+

+ +

+

Screenshot of the note contextual menu indicating the “Export as PDF” + option.

+

On the desktop application of Trilium it is possible to export a note + as PDF. On the server or PWA (mobile), the option is not available due + to technical constraints and it will be hidden.

+

To print a note, select the + button to the right of the note and select Export as PDF.

+

Afterwards you will be prompted to select where to save the PDF file. + Upon confirmation, the resulting PDF will be opened automatically using + the default/system application configured for PDFs.

+

Should you encounter any visual issues in the resulting PDF file (e.g. + a table does not fit properly, there is cut off text, etc.) feel free to + report the issue. In this case, it's best to offer a sample note (click + on the + button, select Export note → This note and all of its descendants → HTML + in ZIP archive). Make sure not to accidentally leak any personal information.

+ +

Landscape mode

+ +

When exporting to PDF, there are no customizable settings such as page + orientation, size, etc. However, it is possible to specify a given note + to be printed as a PDF in landscape mode by adding the #printLandscape attribute + to it (see [missing note]).

+ +

Page size

+ +

By default, the resulting PDF will be in Letter format. It is possible + to adjust it to another page size via the #printPageSize attribute, + with one of the following values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.

+ +

Keyboard shortcut

+ +

It's possible to trigger the export to PDF from the keyboard by going + to Keyboard shortcuts and assigning a key combination for the exportAsPdf action.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF_image.png new file mode 100644 index 000000000..45b8774d4 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Images.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Images.html new file mode 100644 index 000000000..62862588d --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Images.html @@ -0,0 +1,51 @@ + + + + + + + + Images + + + +
+

Images

+ +
+

Trilium supports storing and displaying images. Supported formats are + JPEG, PNG and GIF.

+

An image can be uploaded in the form of note's attachment or + as a standalone note placed + into the note tree. Its + reference can be copied into a text note, in order to display it in the + text itself.

+ +

Uploading images

+ +

To add an image to the note, simply drag it from file explorer onto the + note editor inside Trilium and the image will be uploaded.

+

+ +

+

Alternatively you can click on block toolbar and then on "Insert image":

+

+ +

+

You can also copy and paste an image from web - the image will be (asynchronously) + downloaded and embedded.

+ +

Compression

+ +

Since Trilium isn't really meant to be primary storage for image data, + it attempts to compress and resize (with pretty aggressive settings) uploaded + images before storing them to the database. You may then notice some quality + degradation. Basic quality settings is available in Options -> Other.

+

If you want to save images in their original resolution, it is recommended + to save them as attachment to note (top-right "Note actions -> Import + files").

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Images_image.png new file mode 100644 index 000000000..f8c5cf48f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Links.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Links.html new file mode 100644 index 000000000..bc76e5329 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Links.html @@ -0,0 +1,66 @@ + + + + + + + + Links + + + +
+

Links

+ +
+

External links

+ +

External link is general web link targeting some external web resource + - e.g. https://en.wikipedia.org/wiki/South_China_Sea is + an external link to one Wikipedia page.

+

External links are done through CKEditor native links. To create an external + link, select text and press CTRL-K or wait for the "balloon" + to appear and click link icon there.

+

+ +

+

You can follow external link by either double clicking (will open new + tab/window) it or right clicking on them and choosing "Open in new tab".

+ +

Internal links to notes

+ +

Links to internal notes are created a bit differently. To create link + to note at current cursor position, press CTRL-L.

+

In the dialog you can see radio button to choose from different types + of linking:

+ +

+ +

+

You can follow the note link by double clicking it.

+

Alternatively if you only wish to quickly preview the content, you can + hover over the link and will see read only preview.

+ +

In-place linking

+ +

Trilium also provides "inline" linking - type @ and you'll + see an autocomplete, just type few characters from the desired note title, + press enter and you have a link.

+ +

Note map

+ +

Trilium provides a visualisation of incoming and outgoing links for a + particular note. See note map for + details.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Icons.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Icons.html new file mode 100644 index 000000000..ed787d157 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Icons.html @@ -0,0 +1,34 @@ + + + + + + + + Note Icons + + + +
+

Note Icons

+ +
+

Icons are useful for distinguishing notes. At the technical level, they + are set by the **iconClass** attribute which adds a CSS class + to the note. For example #iconClass="bx bx-calendar" will show + a calendar instead of the default page or folder icon. Looking up and remembering + the css class names is not necessary. While editing a note, click on the + icon next to the title to bring up a chooser gallery:

+

+ change note icon +

+

+ note icon gallery +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Revisions.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Revisions.html new file mode 100644 index 000000000..79a9ad51b --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Revisions.html @@ -0,0 +1,48 @@ + + + + + + + + Note Revisions + + + +
+

Note Revisions

+ +
+

Trilium supports seamless versioning of notes by storing snapshots ("revisions") + of notes at regular intervals.

+ +

Note Revisions Snapshot Interval

+ +

Time interval of taking note snapshot is configurable in the Options -> + Other dialog. This provides a tradeoff between more revisions and more + data to store.

+

To turn off note versioning for a particular note (or subtree), add disableVersioning + labelto the note.

+ +

Note Revision Snapshots Limit

+ +

The limit on the number of note snapshots can be configured in the Options + -> Other dialog. The note revision snapshot number limit refers to the + maximum number of revisions that can be saved for each note. Where -1 means + no limit, 0 means delete all revisions. You can set the maximum revisions + for a single note through the versioningLimit=X label.

+

The note limit will not take effect immediately; it will only apply when + the note is modified.

+

You can click the Erase excess revision snapshots now button + to apply the changes immediately.

+

Note revisions can be accessed through the button on the right of ribbon + toolbar.

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Protected Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Protected Notes.html new file mode 100644 index 000000000..4720673a2 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Protected Notes.html @@ -0,0 +1,118 @@ + + + + + + + + Protected Notes + + + +
+

Protected Notes

+ +
+

Trilium is designed to store a wide variety of data, including sensitive + information such as personal journals, credentials, or confidential documents. + To safeguard this type of content, Trilium offers the option to protect + notes, which involves the following measures:

+ + +

Using Protected Notes

+ +

By default, notes are unprotected. To protect a note, simply click on + the shield icon next to the note's title, as shown here:

+

+ example animation of unlocking protected notes +

+ +

What is Encrypted?

+ +

Trilium encrypts the data within protected notes but not their metadata. + Specifically:

+

Encrypted: +

+ +

Not encrypted: +

+ + +

Encryption Details

+ +

The following steps outline how encryption and decryption work in Trilium:

+
    +
  1. The user enters a password.
  2. +
  3. The password is passed through the scrypt algorithm + along with a "password verification" salt to + confirm that the password is correct.
  4. +
  5. The password is then processed again through scrypt with an "encryption" + salt, which generates a hash. +
      +
    • Scrypt is used for key stretching to + make the password harder to guess.
    • +
    +
  6. +
  7. The generated hash is used to decrypt the actual data encryption key. +
      +
    • The data encryption key is encrypted using AES-128 with + a random IV.
    • +
    • The data encryption key is randomly generated during the database initialization + and remains constant throughout the document’s lifetime. When the password + is changed, only this key is re-encrypted.
    • +
    +
  8. +
  9. The data encryption key is then used to decrypt the actual content of + the note, including its title and body. +
      +
    • The encryption algorithm used is AES-128 with CBC mode, + where a unique IV is generated for each encryption operation and stored + with the cipher text.
    • +
    +
  10. +
+ +

Sharing Protected Notes

+ +

Protected notes cannot be shared in the same way as regular notes. Their + encryption ensures that only authorized users with the correct password + can access them.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Read-Only Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Read-Only Notes.html new file mode 100644 index 000000000..fc590d052 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Read-Only Notes.html @@ -0,0 +1,38 @@ + + + + + + + + Read-Only Notes + + + +
+

Read-Only Notes

+ +
+

Both text and code notes + in Trilium can be set to read-only. When a note is in read-only mode, it + is presented to the user in a non-editable view, with the option to switch + to editing mode if needed.

+ +

Setting Read-Only Mode with a Label

+ +

To set a note as read-only, add the readOnly label to + the note.

+ +

Automatic Read-Only Mode

+ +

For optimization purposes, Trilium will automatically set very large notes + to read-only. Displaying such lengthy notes in editing mode can slow down + performance, especially when editing is unnecessary.

+

If you want to ensure that a specific note remains editable regardless + of its size, you can add the autoReadOnlyDisabled label to + the note.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Right-to-Left Support.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Right-to-Left Support.html new file mode 100644 index 000000000..617aa6152 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Right-to-Left Support.html @@ -0,0 +1,53 @@ + + + + + + + + Right-to-Left Support + + + +
+

Right-to-Left Support

+ +
+

Trilium now has basic support for right-to-left text, but only for  + Text note types (both editable and read-only).

+ + + + + + + + + + + + + +
+ + + +
+

Note that only the Text note type supports this.

+

The list of languages is configurable via the a new dedicated settings + page:

+

+ +

+

To select the corresponding language of the text, go to “Basic Properties” + and select your desired language.

+

+ +

+

Feel free to report any issues regarding right to left support.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Right-to-Left Support_imag.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Right-to-Left Support_imag.png new file mode 100644 index 000000000..8d05d2878 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Right-to-Left Support_imag.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Sorting Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Sorting Notes.html new file mode 100644 index 000000000..e70c16d24 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Sorting Notes.html @@ -0,0 +1,68 @@ + + + + + + + + Sorting Notes + + + +
+

Sorting Notes

+ +
+

Sorting Notes

+ +

You can sort notes by right-clicking the parent note in the note tree + and selecting Advanced -> Sort notes by ... This will sort existing + notes, but will not automatically sort future notes added to this parent + note

+ +

Automatic/Permanent Sorting

+ +

Child notes can be automatically sorted by attaching specific labels to + the parent note:

+ +

Sorting is done by comparing note properties or specific labels on child + notes. There are four sorting levels, with the first having the highest + priority. Lower priority levels are applied only if higher priority comparisons + result in equality.

+
    +
  1. Top Label Sorting: Child notes with the #top label + will appear at the top of the folder.
  2. +
  3. Bottom Label Sorting: (Introduced in Trilium 0.62) Child + notes with the #bottom label will appear at the bottom of the + folder.
  4. +
  5. Property/Label-Based Sorting: Sorting is based on the + parent note's #sorted label: +
      +
    • Default Sorting: If #sorted has no value, + notes are sorted alphabetically.
    • +
    • Property Sorting: If #sorted is set to title, dateModified, + or dateCreated, notes are sorted based on the specified property.
    • +
    • Label Sorting: If #sorted has any other value, + this value is treated as the name of a child note's label, and sorting + is based on the values of this label. For example, setting #sorted=myOrder on + the parent note and using #myOrder=001, #myOrder=002, + etc., on child notes.
    • +
    +
  6. +
  7. Alphabetical Sorting: Used as a last resort when other + criteria result in equality.
  8. +
+

All comparisons are made string-wise (e.g., "1" < "2" or "2020-10-10" + < "2021-01-15", but also "2" > "10").

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes.html new file mode 100644 index 000000000..4d23c846c --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes.html @@ -0,0 +1,175 @@ + + + + + + + + Themes + + + +
+

Themes

+ +
+

Default Themes

+ +

Trilium comes with a couple pre-installed color themes, with the default + being a light theme. To switch to a dark theme or any other available theme, + navigate to the Options menu (accessible via the app icon in the top-left + corner), select the Appearance tab, and choose your preferred theme.

+

+ Dark Theme +

+ +

Creating Custom CSS Themes

+ +

Trilium supports custom user themes, allowing you to personalize the application's + appearance. To create a custom theme, follow these steps:

+
    +
  1. Create a CSS Code Note: Start by creating a new code note with + the CSS type.
  2. +
  3. Annotate with **#appTheme**: Add the attribute #appTheme=my-theme-name to + your note, where my-theme-name is the name of your custom theme.
  4. +
  5. Define Your Styles: Write your custom CSS within the + note. Below is an example of a custom theme:
  6. +
+
@font-face {
+  font-family: 'Raleway';
+  font-style: normal;
+  font-weight: 400;
+  src: url('/custom/fonts/raleway.woff2') format('woff2');
+}
+
+:root {
+    --main-font-family: 'Raleway' !important;
+    --main-font-size: normal;
+    --tree-font-family: inherit;
+    --tree-font-size: normal;
+    --detail-font-family: inherit;
+    --detail-font-size: normal;
+    --detail-text-font-family: 'Garamond' !important;
+
+    --main-background-color: #404552;
+    --main-text-color: #AFB8C6;
+    --main-border-color: #AFB8C6;
+    --accented-background-color: #383C4A;
+    --more-accented-background-color: #2F343F;
+    --header-background-color: #383C4A;
+    --button-background-color: #2F343F;
+    --button-disabled-background-color: #404552;
+    --button-border-color: #333;
+    --button-text-color: #AFB8C6;
+    --button-border-radius: 2px;
+    --primary-button-background-color: #6c757d;
+    --primary-button-text-color: white;
+    --primary-button-border-color: #6c757d;
+    --muted-text-color: #86919F;
+    --input-text-color: #AFB8C6;
+    --input-background-color: #404552;
+    --hover-item-text-color: white;
+    --hover-item-background-color: #4877B1;
+    --active-item-text-color: white;
+    --active-item-background-color: #4877B1;
+    --menu-text-color: #AFB8C6;
+    --menu-background-color: #383C4A;
+    --tooltip-background-color: #383C4A;
+    --link-color: lightskyblue;
+    --modal-background-color: #404552;
+    --modal-backdrop-color: black;
+    --scrollbar-border-color: rgba(175, 184, 198, 0.5);
+}
+
+body .note-detail-text {
+    font-size: 120%;
+}
+
+body .CodeMirror {
+    filter: invert(100%) hue-rotate(180deg);
+}
+

Activating Your Custom Theme

+ +

Once you've created your custom theme:

+
    +
  1. Go to "Menu" -> "Options" -> "Appearance."
  2. +
  3. In the theme selection dropdown, you should see your custom theme listed + under the name you provided with the #appTheme label.
  4. +
  5. Select your custom theme to activate it.
  6. +
+

If you make changes to your theme, press CTRL-R to reload the + frontend and apply your updates.

+ +

Sharing and Importing Themes

+ +

Custom themes can be exported as .tar archives, which can be + shared with other users. However, be cautious when importing themes from + untrusted sources, as they may contain executable scripts that could pose + security risks.

+

An example user theme, Steel Blue, is available in the demo document.

+

+ Steel Blue Theme +

+ +

Using Custom CSS for Specific Purposes

+ +

In addition to full themes, Trilium allows for custom CSS that isn't tied + to a theme. This can be particularly useful in scripting contexts, where + you might want to modify specific UI elements, such as changing the colors + of notes in the tree view.

+ +

Applying Custom CSS

+ +

To use custom CSS:

+
    +
  1. Create a CSS Code Note: Create a new code note with + the CSS type.
  2. +
  3. Add the **appCss** Label: + Annotate the note with the #appCss label.
  4. +
  5. Write Your CSS: Add your custom CSS rules to the note.
  6. +
+

For example:

+
/* Custom CSS to style specific elements */
+.tree-item {
+    color: #ff6347; /* Change tree item color */
+}
+

When Trilium's frontend starts, all notes labeled with appCss are + automatically included in the style element of the HTML page.

+

After making changes, press CTRL-R to reload the frontend and + apply your new styles.

+

+ +

+ +

Styling Specific Notes in the Tree

+ +

To apply specific styles to certain notes in the tree:

+ +

For example, if you want to style notes of a specific type, such as notes + containing PNG images, you can target them with classes like type-image mime-image-png.

+ +

User-Provided Themes

+ +

A gallery of user-created themes is available, showcasing the variety + of customizations that the Trilium community has developed. For more information, + visit the Theme Gallery.

+ +

Asset Path Management

+ +

When referencing built-in assets like images in your custom themes or + CSS, you can avoid hardcoding version numbers by using the vX alias. + For example, instead of specifying /assets/v0.57.0-beta/images/icon-grey.png, + you can use /assets/vX/images/icon-grey.png to keep your theme + compatible with future versions of Trilium.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery.html new file mode 100644 index 000000000..73fe73d66 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery.html @@ -0,0 +1,144 @@ + + + + + + + + Theme Gallery + + + +
+

Theme Gallery

+ +
+

These are user-created themes which were made publicly available:

+ +

Legacy Themes

+ +

These themes may or may not be compatible with the latest versions of + TriliumNext and are based on the original/legacy theme.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ThemeAuthor
Midnight + tobealive +
EOTE + tobealive +
Trilium Themes + Abourass +
MaterialDark + ZMonk91 +
lightslategray + jaroet +
melon-4 + raphwriter +
Neon_Dark + Engr-AllanG +
Coder_Dark + Engr-AllanG +
velvet + idelem +
Dark Plus + SADAVA +
Solarized + WKSu +
Nord + en3r0 +
Bear Note Light + AllanZyne +
Bear Note Dark + AllanZyne +
Miku Hatsune + Sebiann +
Midnight + cwilliams5 +
Blue (light)SiriusXT +
Blue (dark)SiriusXT +
+

If you would like to add your theme to this gallery, write a new post + in 👐 Show and tell.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg new file mode 100644 index 000000000..5b2eb96ff Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes_image.png new file mode 100644 index 000000000..49df90730 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png new file mode 100644 index 000000000..7a30a84df Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.html new file mode 100644 index 000000000..b9b8d6c3a --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.html @@ -0,0 +1,48 @@ + + + + + + + + Global menu + + + +
+

Global menu

+ +
+

The position of the global menu differs based on which layout is selected + in settings:

+ + + + + + + + + + + + + + +
+ +
+
The global menu in the vertical layout.
+ +
+
The global menu in the horizontal layout.
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png new file mode 100644 index 000000000..37a565d3f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements_image.png new file mode 100644 index 000000000..37a565d3f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode.html new file mode 100644 index 000000000..9b173d56f --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode.html @@ -0,0 +1,72 @@ + + + + + + + + Zen mode + + + +
+

Zen mode

+ +
+

+ +

+

Screenshot of Zen Mode activated on a Windows 11 system with native title + bar off and background effects on.

+

When Zen Mode is activated (pictured on the side), most of the user interface + of Trilium is hidden away in order to be able to focus on the content, + whether it's for reading or writing.

+

+ +

+

Screenshot of the Zen Mode option in the global menu.

+ +

Activating & deactivating

+ +

The Zen Mode can be activated by accessing the global menu and selecting + the “Zen Mode” option:

+

Aside from the global menu, it's also possible to activate this mode by + using a keyboard shortcut which is Alt+Z by default. Look for toggleZenMode in + the shortcut configuration.

+

Once Zen Mode is activated, all the UI elements of the application will + be hidden away, including the global menu. In that case, the Zen Mode can + be deactivated either by pressing the + icon in the top-right corner of the window or by pressing the keyboard + combination again.

+

Do note that, by design, activating or deactivating the Zen Mode applies + only to the current window. Restarting the application will also disable + the Zen Mode.

+ +

Moving the window around

+ +

If “Native title bar” is activated, then the operating system's default + title bar can be used to drag the window around. If deactivated, the window + can still be moved by dragging the mouse across the top part of the window + where the note titles are.

+

+ +

+

Screenshot of two notes side-by-side while Zen Mode is active, on Windows + 11 with background effects off.

+ +

Split windows and tabs

+ +

Tabs are completely hidden, however it's still possible to use keyboard + shortcuts such as firstTab (Ctrl+1 by default), secondTab (Ctrl+2 + by default). There are also some newer shortcuts such as activateNextTab (Ctrl+Tab) + or activatePreviousTab (Ctrl+Shift+Tab) that allow easy navigation, + however make sure that they are configured properly in the settings.

+

For the split view of notes, there are no keyboard shortcuts at the time + of writing, but it's still possible to have them in Zen Mode by creating + the split while the Zen Mode is off and then reactivating it afterwards.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode_image.png new file mode 100644 index 000000000..c2543960a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Downloading responses from Goo.html b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Downloading responses from Goo.html new file mode 100644 index 000000000..f6594751b --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Downloading responses from Goo.html @@ -0,0 +1,63 @@ + + + + + + + + Downloading responses from Google Forms + + + +
+

Downloading responses from Google Forms

+ +
+

This tutorial showcases a basic integration with Google Forms, where we + are able to download the responses of a form using the “Link to Sheets" + functionality.

+

Note that the link will be publicly accessible to everyone (however the + link is in a hard-to-guess format such as https://docs.google.com/spreadsheets/d/e/2PACX-1vTA8NU2_eZFhc8TFadCZPreBfvP7un8IHd6J0SchrLLw3ueGmntNZjwRmsH2ZRcp1pJYDAzMz1FmFaj/pub?output=csv). + Make sure you are not accidentally publishing sensitive information.

+ +

Obtaining the CSV link

+ +
    +
  1. Open the Google Forms in a browser.
  2. +
  3. Select the “Responses” tab and click on “Link to Sheets”.
  4. +
  5. Select “Create a new spreadsheet” and press “Create”.
  6. +
  7. In Google Sheets, select File → Share → Publish to web.
  8. +
  9. In the “Publish to the web” screen, make sure the “Link” tab is selected + and instead of “Web page”, select “Comma-separated values (.csv)”.
  10. +
  11. Copy the given link which will be used for the upcoming script.
  12. +
+ +

Creating the script

+ +

Create a “JS Frontend” script:

+
const CSV_URL = "https://docs.google.com/spreadsheets/d/e/2PACX-1vTiwooLV2whjCSVa49dJ99p_G3_qhqHHRqttMjYCJVfLXVdTgUSNJu5K0rpqmaHYF2k7Vofi3o7gW82/pub?output=csv";
+
+async function fetchData() {
+    try {
+        const response = await fetch(CSV_URL);
+        return await response.text();
+    } catch (e) {
+        api.showError(e.message);
+    }
+}
+
+const data = await fetchData();
+console.log(data);
+// Do something with the data.
+

Note that the data will be received as a string and there is no library + to do the CSV parsing for us. To do a very simple parsing of CSV:

+
const content = data
+	.split("\n")
+	.slice(1)
+	.map((row) => row.split(","));
+

This will return the data as an array of arrays.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes .png b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes .png new file mode 100644 index 000000000..ec76f84a2 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes .png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.html b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.html new file mode 100644 index 000000000..42bde7256 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.html @@ -0,0 +1,69 @@ + + + + + + + + Using promoted attributes to configure scripts + + + +
+

Using promoted attributes to configure scripts

+ +
+

A good use case of promoted attributes is to easily define the various + parameters a script might need, for example an input and output note if + it's processing data, or a checkbox to define a particular change in behavior + for the script.

+

+ +

+ +

Using check boxes to toggle flags

+ +

Instead of asking the user to modify a boolean value in the script, it's + much more intuitive to use a checkbox for it as a promoted attribute.

+

To do so, first define the promoted attribute:

+
#label:groupByExtension="promoted,alias=Group by extension,single,boolean"
+

Then use it:

+
const byExtension = api.currentNote.getLabelValue("groupByExtension") === "true";
+if (byExtension) {
+	// Do something.
+}
+

This will work equally well in both front-end and back-end scripts.

+ +

Using relations to select notes

+ +

One common use case for a script is to read data from another note and + perhaps output its result in another note. To do so we need to define the + following promoted attributes:

+
#relation:input="promoted,alias=Input,single" #relation:output="promoted,alias=Output,single"
+

Once we have this, we can add some basic error handling to ensure that + the fields are completed by the user:

+
const inputNoteId = api.currentNote.getRelationValue("input");
+if (!inputNoteId) {
+	api.showError("Missing input.");
+    return;
+}
+
+const outputNoteId = api.currentNote.getRelationValue("output");
+if (!outputNoteId) {
+    api.showError("Missing output.");
+    return;
+}
+

Note that here we are using api.showError which is only available + for frontend notes. If you are writing a backend note, simply remove api.showError but + the user will no feedback on why the script did not execute properly.

+

Afterwards we can simply read the note and do something with it:

+
const note = api.getNote(inputNoteId);
+if (!note) {
+	return;
+}
+const content = note.getContent().toString("utf-8");
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Frontend Basics.html b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Frontend Basics.html new file mode 100644 index 000000000..d51ab300d --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Frontend Basics.html @@ -0,0 +1,116 @@ + + + + + + + + Frontend Basics + + + +
+

Frontend Basics

+ +
+

Frontend API

+ +

The frontend api supports two styles, regular scripts that are run with + the current app and note context, and widgets that export an object to + Trilium to be used in the UI. In both cases, the frontend api of Trilium + is available to scripts running in the frontend context as global variable api. + The members and methods of the api can be seen on the Script API page.

+ +

Scripts

+ +

Scripts don't have any special requirements. They can be run at will using + the execute button in the UI or they can be configured to run at certain + times using Attributes on + the note containing the script.

+ +

Global Events

+ +

This attribute is called #run and it can have any of the following + values:

+ + +

Entity Events

+ +

These events are triggered by certain relations to + other notes. Meaning that the script is triggered only if the note has + this script attached to it through relations (or it can inherit it).

+ + +

Widgets

+ +

Conversely to scripts, widgets do have some specific requirements in order + to work. A widget must:

+ + +

parentWidget

+ + + +

Tutorial

+ +

For more information on building widgets, take a look at Widget Basics.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/REST API/ETAPI/API Reference.dat b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/REST API/ETAPI/API Reference.dat new file mode 100644 index 000000000..e69de29bb diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/REST API/Internal API/API Reference.dat b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/REST API/Internal API/API Reference.dat new file mode 100644 index 000000000..e69de29bb diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Widget Basics.html b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Widget Basics.html new file mode 100644 index 000000000..1bc37bad4 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Widget Basics.html @@ -0,0 +1,124 @@ + + + + + + + + Widget Basics + + + +
+

Widget Basics

+ +
+

This guide will walk you through creating a basic widget inside Trilium. + By following these steps, you'll learn how to build a simple UI element + that interacts with the user.

+ +

Step 1: The Basic Widget Structure

+ +

To start, we'll create the most basic widget possible. Here's a simple + example:

+
class MyWidget extends api.BasicWidget {
+    get position() { return 1; }
+    get parentWidget() { return "left-pane"; }
+    
+    doRender() {
+        this.$widget = $("");
+        return this.$widget;
+    }
+}
+
+module.exports = new MyWidget();
+

To implement this widget:

+
    +
  1. Create a new JS Frontend note in Trilium and paste in the code + above.
  2. +
  3. Assign the #widget attribute to + the note.
  4. +
  5. Restart Trilium or reload the window.
  6. +
+

To verify that the widget is working, open the developer tools (Cmd + Shift + I) + and run document.querySelector("#my-widget"). If the element + is found, the widget is functioning correctly. If undefined is + returned, double-check that the note has + the #widget attribute.

+ +

Step 2: Adding an UI Element

+ +

Next, let's improve the widget by adding a button to it.

+
const template = ``;
+
+class MyWidget extends api.BasicWidget {
+    get position() {return 1;}
+    get parentWidget() {return "left-pane"}
+
+    doRender() {
+        this.$widget = $(template);
+        return this.$widget;
+    }
+}
+
+module.exports = new MyWidget();
+

After making this change, reload Trilium. You should now see a button + in the top-left corner of the left pane.

+ +

Step 3: Styling the Widget

+ +

To make the button more visually appealing and position it correctly, + we'll apply some custom styling. Trilium includes Box Icons, + which we'll use to replace the button text with an icon. For example the bx bxs-magic-wand icon.

+

Here's the updated template:

+
const template = ``;
+

Next, we'll adjust the button's position using CSS:

+
class MyWidget extends api.BasicWidget {
+    get position() { return 1; }
+    get parentWidget() { return "left-pane"; }
+    
+    doRender() {
+        this.$widget = $(template);
+        this.cssBlock(`#my-widget {
+            position: absolute;
+            bottom: 40px;
+            left: 60px;
+            z-index: 1;
+        }`);
+        return this.$widget;
+    }
+}
+
+module.exports = new MyWidget();
+

After reloading Trilium, the button should now appear at the bottom left + of the left pane, alongside other action buttons.

+ +

Step 4: Adding User Interaction

+ +

Let’s make the button interactive by showing a message when it’s clicked. + We'll use the api.showMessage method from the Script API.

+
class MyWidget extends api.BasicWidget {
+    get position() { return 1; }
+    get parentWidget() { return "left-pane"; }
+    
+    doRender() {
+        this.$widget = $(template);
+        this.cssBlock(`#my-widget {
+            position: absolute;
+            bottom: 40px;
+            left: 60px;
+            z-index: 1;
+        }`);
+        this.$widget.find("button").on("click", () => api.showMessage("Hello World!"));
+        return this.$widget;
+    }
+}
+
+module.exports = new MyWidget();
+

Reload the application one last time. When you click the button, a "Hello + World!" message should appear, confirming that your widget is fully functional.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/FAQ.html b/src/public/app/doc_notes/en/User Guide/User Guide/FAQ.html new file mode 100644 index 000000000..732a09deb --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/FAQ.html @@ -0,0 +1,120 @@ + + + + + + + + FAQ + + + +
+

FAQ

+ +
+

Mac OS support

+ +

Originally, desktop builds of Trilium Notes has been available for Windows + & Linux, but there has been a considerable demand for macOS build.

+

So I made one, but I underestimated the differences and specifics of Mac + platform which seems to require special handling in several places. My + lack of knowledge and frankly willingness to learn & code Mac specific + functionality resulted in a current state where Trilium does not integrate well into the OS 

+

%%{WARNING}%%.

+

macOS build is from now on considered "unsupported". I will strive to + keep it fundamentally functional, but I won't work on Mac specific features + or integrations. Note that this is more of an acknowledgment of an existing + state rather than sudden change of direction.

+

Of course, PRs are welcome.

+ +

Translation / localization support

+ +

Trilium is currently available only in English. Translation to other languages + is not planned in the near/medium term because it brings a significant + maintenance overhead. This decision might be revisited once Trilium stabilizes + into a more mature product.

+

For Chinese, there's an unofficial fork here. + Use at your own risk.

+ +

Multi user support

+ +

Common request is to allow multiple users collaborate, share notes etc. + So far I'm resisting this because of these reasons:

+ + +

How to open multiple documents in one Trilium instance

+ +

This is normally not supported - one Trilium process can open only a single + instance of a database. However, + you can run two Trilium processes (from one installation), each connected + to a separate document. To achieve this, you need to set a location for + the data directory in + the TRILIUM_DATA_DIR environment variable and separate port + on TRILIUM_PORT environment variable. How to do that depends + on the platform, in Unix-based systems you can achieve that by running + command such as this:

+
TRILIUM_DATA_DIR=/home/me/path/to/data/dir TRILIUM_PORT=12345 trilium 
+

You can save this command into a .sh script file or make an + alias. Do this similarly for a second instance with different data directory + and port.

+ +

Can I use Dropbox / Google Drive / OneDrive to sync data across multiple computers.

+ +

No.

+

These general purpose sync apps are not suitable to sync database files + which are open and being worked on by another application. The result is + that they will corrupt the database file, resulting in data loss and this + message in the Trilium logs:

+
+

SqliteError: database disk image is malformed

+
+

The only supported way to sync Trilium's data across the network is to + use a sync/web server.

+ +

Why database instead of flat files?

+ +

Trilium stores notes in a database which + is an SQLite database. People often ask why doesn't Trilium rather use + flat files for note storage - it's fair question since flat files are easily + interoperable, work with SCM/git etc.

+

Short answer is that file systems are simply not powerful enough for what + we want to achieve with Trilium. Using filesystem would mean fewer features + with probably more problems.

+

More detailed answer:

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html new file mode 100644 index 000000000..e1d2554b8 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html @@ -0,0 +1,77 @@ + + + + + + + + Backup + + + +
+

Backup

+ +
+

Trilium supports simple backup scheme where it saves copy of the document on + these events:

+ +

So in total you'll have at most 4 backups from different points in time + which should protect you from various problems. These backups are stored + by default in backup directory placed in the data directory.

+

This is only very basic backup solution, and you're encouraged to add + some better backup solution - e.g. backing up the document to + cloud / different computer etc.

+

Note that synchronization provides also + some backup capabilities by its nature of distributing the data to other + computers.

+ +

Restoring backup

+ +

Let's assume you want to restore the weekly backup, here's how to do it:

+ +

If you have configured sync then you need to do it across all members + of the sync cluster, otherwise older version (restored backup) of the document + will be detected and synced to the newer version.

+ +

Disabling backup

+ +

Although this is not recommended, it is possible to disable backup in config.ini in + the data directory:

+
[General]
+... some other configs
+# set to true to disable backups (e.g. because of limited space on server)
+noBackup=true
+

You can also review the configuration file + to provide all config.ini values as environment variables instead.

+

See sample config. + %%{WARNING}%%

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory.html new file mode 100644 index 000000000..85bd7bd42 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory.html @@ -0,0 +1,114 @@ + + + + + + + + Data directory + + + +
+

Data directory

+ +
+

Data directory contains:

+ + +

Location

+ +

Easy way how to find out which data directory Trilium uses is to look + at the "About Trilium Notes" dialog (from "Menu" in upper left corner):

+

+ +

+

Here's how the location is decided:

+

Data directory is normally named trilium-data and it is stored + in:

+ +

If you want to back up your Trilium data, just backup this single directory + - it contains everything you need.

+ +

Changing the location of data directory

+ +

If you want to use some other location for the data directory than the + default one, you may change it via TRILIUM_DATA_DIR environment variable + to some other location:

+ +

Linux

+ +
export TRILIUM_DATA_DIR=/home/myuser/data/my-trilium-data
+

Mac OS X

+ +

You need to create a .plist file under ~/Library/LaunchAgents to + load it properly each login.

+

To load it manually, you need to use launchctl setenv TRILIUM_DATA_DIR <yourpath> +

+

Here is a pre-defined template, where you just need to add your path to:

+

+
+
+
+    
+        Label
+        set.trilium.env
+        RunAtLoad
+        
+        ProgramArguments
+        
+            launchctl
+            setenv
+            TRILIUM_DATA_DIR
+            /Users/YourUserName/Library/Application Support/trilium-data
+        
+    
+
+

Create a script to run with specific data directory

+ +

An alternative to globally setting environment variable is to run only + the Trilium Notes with this environment variable. This then allows for + different setup styles like two database instances + or "portable" installation.

+

To do this in unix based systems simply run trilium like this:

+
TRILIUM_DATA_DIR=/home/myuser/data/my-trilium-data trilium
+

You can then save the above command as a shell script on your path for + convenience.

+ +

Fine-grained directory/path location

+ +

It's possible to configure e.g. backup and log directories separately, + with following environment variables:

+ +

If these are not set, default paths within the data directory will be + used.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory_image.png new file mode 100644 index 000000000..823c6ceac Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation.html new file mode 100644 index 000000000..5b359c91f --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation.html @@ -0,0 +1,56 @@ + + + + + + + + Desktop Installation + + + +
+

Desktop Installation

+ +
+

To install Trilium on your desktop, follow these steps:

+
    +
  1. Download the Latest Release: Obtain the appropriate binary + release for your operating system from the latest release page on + GitHub.
  2. +
  3. Extract the Package: Unzip the downloaded package to + a location of your choice.
  4. +
  5. Run the Application: Launch Trilium by executing the trilium executable + found within the unzipped folder.
  6. +
+ +

Startup Scripts

+ +

Trilium offers various startup scripts to customize your experience:

+ + +

Synchronization

+ +

For Trilium desktp users who wish to synchronize their data with a server + instance, refer to the Synchronization Guide for + detailed instructions.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html new file mode 100644 index 000000000..32370255d --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html @@ -0,0 +1,69 @@ + + + + + + + + Mobile Frontend + + + +
+

Mobile Frontend

+ +
+

Trilium (server edition) has + a mobile web frontend which is optimized for touch based devices - smartphones + and tablets. It is activated automatically during login process based on + browser detection.

+

Mobile frontend is limited in features compared to full desktop frontend. + See below for more details on this.

+

Note that this is not an Android/iOS app, this is just mobile friendly + web page served on the server edition.

+ +

Screenshots

+ + +

Mobile phone

+ +

+ +

+ +

Tablet

+ +

+ +

+ +

Limitations

+ +

Mobile frontend provides only some of the features of the full desktop + frontend:

+ + +

Forcing mobile/desktop frontend

+ +

Trilium decides automatically whether to use mobile or desktop frontend. + If this is not appropriate, you can use ?mobile or ?desktop query + param on login page (Note: you might need to log out).

+ +

Scripting

+ +

You can alter the behavior with scripts just + like for normal frontend. For script notes to be executed, they need to + have labeled #run=mobileStartup.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html new file mode 100644 index 000000000..0e3123110 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html @@ -0,0 +1,95 @@ + + + + + + + + Server Installation + + + +
+

Server Installation

+ +
+

This guide outlines the steps to install Trilium on your own server. You + might consider this option if you want to set up synchronization or + use Trilium in a browser - accessible from anywhere.

+ +

Installation Options

+ +

There are several ways to install Trilium on a server, each with its own + advantages:

+ +

The server installation includes both web and mobile frontends.

+ +

Configuration

+ +

After setting up your server installation, you may want to configure settings + such as the port or enable TLS. + Configuration is managed via the Trilium config.ini file, which + is located in the data directory by default. + To begin customizing your setup, copy the provided config-sample.ini file + with default values to config.ini.

+

You can also review the configuration file + to provide all config.ini values as environment variables instead.

+ +

Config Location

+ +

By default, config.ini, the database, + and other important Trilium data files are stored in the data directory. + If you prefer a different location, you can change it by setting the TRILIUM_DATA_DIR environment + variable:

+
export TRILIUM_DATA_DIR=/home/myuser/data/my-trilium-data
+

Disabling Authentication

+ +

If you are running Trilium on localhost only or if authentication is handled + by another component, you can disable Trilium’s authentication by adding + the following to config.ini:

+
[General]
+noAuthentication=true
+

Reverse Proxy Setup

+ +

To configure a reverse proxy for Trilium, you can use either nginx or Apache.

+ +

nginx

+ +

Add the following configuration to your nginx setup to proxy + requests to Trilium:

+
location /trilium/ {
+    proxy_pass http://127.0.0.1:8080/;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection 'upgrade';
+    proxy_set_header Host $host;
+    proxy_cache_bypass $http_upgrade;
+}
+

To avoid limiting the size of payloads, include this in the server {} block:

+
# Set to 0 for unlimited. Default is 1M.
+client_max_body_size 0;
+

Apache

+ +

For an Apache setup, refer to the Apache proxy setup guide.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.html new file mode 100644 index 000000000..dc89eca58 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.html @@ -0,0 +1,137 @@ + + + + + + + + Docker Server Installation + + + +
+

Docker Server Installation

+ +
+

Official docker images are published on docker hub for AMD64, ARMv7 and ARM64/v8: + https://hub.docker.com/r/triliumnext/notes/ +

+ +

Prerequisites

+ +

Ensure Docker is installed on your system.

+

If you need help installing Docker, reference the Docker Installation Docs +

+

Note: Trilium's Docker container requires root privileges + to operate correctly.

+
+

[!WARNING] If you're using a SMB/CIFS share or folder as your Trilium + data directory, you'll need to + add the mount options of nobrl and noperm when mounting + your SMB share.

+
+ +

Running with Docker Compose

+ + +

Grab the latest docker-compose.yml:

+ +
wget https://raw.githubusercontent.com/TriliumNext/Notes/master/docker-compose.yml
+

Optionally, edit the docker-compose.yml file to configure the + container settings prior to starting it. Unless configured otherwise, the + data directory will be ~/trilium-data and the container will + be accessible at port 8080.

+ +

Start the container:

+ +

Run the following command to start the container in the background:

+
docker compose up -d
+

Running without Docker Compose / Further Configuration

+ + +

Pulling the Docker Image

+ +

To pull the image, use the following command, replacing [VERSION] with + the desired version or tag, such as v0.91.6 or just latest. + (See published tag names at https://hub.docker.com/r/triliumnext/notes/tags.):

+
docker pull triliumnext/notes:v0.91.6
+

Warning: Avoid using the "latest" tag, as it may automatically + upgrade your instance to a new minor version, potentially disrupting sync + setups or causing other issues.

+ +

Preparing the Data Directory

+ +

Trilium requires a directory on the host system to store its data. This + directory must be mounted into the Docker container with write permissions.

+ +

Running the Docker Container

+ + +

Local Access Only

+ +

Run the container to make it accessible only from the localhost. This + 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/notes:[VERSION]
+
    +
  1. Verify the container is running using docker ps.
  2. +
  3. Access Trilium via a web browser at 127.0.0.1:8080.
  4. +
+ +

Local Network Access

+ +

To make the container accessible only on your local network, first create + a new Docker network:

+
docker network create -d macvlan -o parent=eth0 --subnet 192.168.2.0/24 --gateway 192.168.2.254 --ip-range 192.168.2.252/27 mynet
+

Then, run the container with the network settings:

+
docker run --net=mynet -d -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:-latest
+

To set a different user ID (UID) and group ID (GID) for the saved data, + use the USER_UID and USER_GID environment variables:

+
docker run --net=mynet -d -p 127.0.0.1:8080:8080 -e "USER_UID=1001" -e "USER_GID=1001" -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:-latest
+

Find the local IP address using docker inspect [container_name] and + access the service from devices on the local network.

+
docker ps
+docker inspect [container_name]
+

Global Access

+ +

To allow access from any IP address, run the container as follows:

+
docker run -d -p 0.0.0.0:8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:[VERSION]
+

Stop the container with docker stop <CONTAINER ID>, + where the container ID is obtained from docker ps.

+ +

Custom Data Directory

+ +

For a custom data directory, use:

+
-v ~/YourOwnDirectory:/home/node/trilium-data triliumnext/notes:[VERSION]
+

If you want to run your instance in a non-default way, please use the + volume switch as follows: -v ~/YourOwnDirectory:/home/node/trilium-data triliumnext/notes:<VERSION>. + It is important to be aware of how Docker works for volumes, with the first + path being your own and the second the one to virtually bind to. https://docs.docker.com/storage/volumes/ The + path before the colon is the host directory, and the path after the colon + is the container's path. More details can be found in the Docker Volumes Documentation.

+ +

Reverse Proxy

+ +
    +
  1. Nginx +
  2. +
  3. Apache +
  4. +
+ +

Note on --user Directive

+ +

The --user directive is unsupported. Instead, use the USER_UID and USER_GID environment + variables to set the appropriate user and group IDs.

+ +

Note on timezones

+ +

If you are having timezone issues and you are not using docker-compose, + you may need to add a TZ environment variable with the TZ identifier of + your local timezone.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.html new file mode 100644 index 000000000..e7dd28425 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.html @@ -0,0 +1,63 @@ + + + + + + + + Kubernetes server installation + + + +
+

Kubernetes server installation

+ +
+

As Trilium can be run in Docker it also can be deployed in Kubernetes. + You can either use our Helm chart, a community Helm chart, or roll your + own Kubernetes deployment.

+

The recommended way is to use a Helm chart.

+ +

Root privileges

+ +
+

[!NOTE] +
The Trilium container at this time needs to be run with root privileges. + It will swap to UID and GID 1000:1000 to run the node process + after execution though, so the main process doesn't run with root privileges.

+
+

The Trilium docker container needs to be run with root privileges. The + node process inside the container will be started with reduced privileges + (uid:gid 1000:1000) after some initialization logic. Please make sure that + you don't use a security context (PodSecurityContext) which changes the + user ID. To use a different uid:gid for file storage and the application, + please use the USER_UID & USER_GID environment + variables.

+

The docker image will also fix the permissions of /home/node so + you don't have to use an init container.

+ +

Helm Charts

+ +

Official Helm chart from + TriliumNext Unofficial helm chart by ohdearaugustin: + https://github.com/ohdearaugustin/charts +

+ +

Adding a Helm repository

+ +

Below is an example of how

+
helm repo add trilium https://triliumnext.github.io/helm-charts
+"trilium" has been added to your repositories
+

How to install a chart

+ +

After reviewing the values.yaml from + the Helm chart, modifying as required and then creating your own:

+
helm install --create-namespace --namespace trilium trilium trilium/trilium -f values.yaml
+

For more information on using Helm, please refer to the Helm documentation, + or create a Discussion in the TriliumNext GitHub Organization.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.html new file mode 100644 index 000000000..6486ca9e2 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.html @@ -0,0 +1,74 @@ + + + + + + + + Manual server installation + + + +
+

Manual server installation

+ +
+

This page describes manually installing Trilium on your server. Note that this is a not well supported way to install Trilium, problems may appear, information laid out here is quite out of date. It is recommended to use either Docker or packaged build installation. +

+ +

Requirements

+ +

Trilium is a node.js application. Supported (tested) version of node.js + is latest 14.X.X and 16.X.X. Trilium might work with older versions as + well.

+

You can check your node version with this command (node.js needs to be + installed):

+
node --version
+

If your Linux distribution has only an outdated version of node.js, you + can take a look at the installation instruction on node.js website, which + covers most popular distributions.

+ +

Dependencies

+ +

There are some dependencies required. You can see command for Debian and + its derivatives (like Ubuntu) below:

+
sudo apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essential nasm libx11-dev libxkbfile-dev
+

Installation

+ + +

Download

+ +

You can either download source code zip/tar from https://github.com/TriliumNext/Notes/releases/latest]] %%{WARNING}%%or + clone git repository from stable branch with

+
git clone -b stable https://github.com/triliumnext/notes.git %%{WARNING}%%
+

Installation

+ +
cd trilium
+
+# download all node dependencies
+npm install
+
+# make sure the better-sqlite3 binary is there
+npm rebuild
+
+# bundles & minifies frontend JavaScript
+npm run webpack
+

Run

+ +
cd trilium
+
+# using nohup to make sure trilium keeps running after user logs out
+nohup TRILIUM_ENV=dev node src/www &
+

The application by default starts up on port 8080, so you can open your + browser and navigate to http://localhost:8080 to + access Trilium (replace "localhost" with your hostname).

+ +

TLS

+ +

Don't forget to configure TLS which + is required for secure usage!

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/NixOS server installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/NixOS server installation.html new file mode 100644 index 000000000..5c710ba18 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/NixOS server installation.html @@ -0,0 +1,40 @@ + + + + + + + + NixOS server installation + + + +
+

NixOS server installation

+ +
+

This page describes configuring the Trilium module included in NixOS.

+ +

Requirements

+ +

NixOS installation.

+ +

Configuration

+ +

Add this to your configuration.nix:

+
services.trilium-server.enable = true;
+
+# default data directory: /var/lib/trilium
+#services.trilium-server.dataDir = "/var/lib/trilium-sync-server";
+
+# default bind address: 127.0.0.1, port 8080
+#services.trilium-server.host = "0.0.0.0";
+#services.trilium-server.port = 12783;
+

Uncomment any option you would like to change.

+

See the NixOS options list for + more options (including nginx reverse proxy configuration).

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.html new file mode 100644 index 000000000..f1a269180 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.html @@ -0,0 +1,105 @@ + + + + + + + + Packaged server installation + + + +
+

Packaged server installation

+ +
+

This is essentially Trilium sources + node modules + node.js runtime packaged + into one 7z file.

+ +

Steps

+ + +

The problem with above steps is that once you close the SSH connection, + the Trilium process is terminated. To avoid that, you have two options:

+ + +

Configure Trilium to auto-run on boot with systemd

+ + +
tar -xvf trilium-linux-x64-server-[VERSION].tar.xz
+sudo mv trilium-linux-x64-server /opt/trilium
+ +
sudo nano /etc/systemd/system/trilium.service
+ +
[Unit]
+Description=Trilium Daemon
+After=syslog.target network.target
+
+[Service]
+User=xxx
+Group=xxx
+Type=simple
+ExecStart=/opt/trilium/trilium.sh
+WorkingDirectory=/opt/trilium/
+
+TimeoutStopSec=20
+# KillMode=process leads to error, according to https://www.freedesktop.org/software/systemd/man/systemd.kill.html
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+ +
sudo systemctl enable --now -q trilium
+ + +

Common issues

+ + +

Outdated glibc

+ +
Error: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/www/virtual/.../node_modules/@mlink/scrypt/build/Release/scrypt.node)
+    at Object.Module._extensions..node (module.js:681:18)
+    at Module.load (module.js:565:32)
+    at tryModuleLoad (module.js:505:12)
+

If you get an error like this, you need to either upgrade your glibc (typically + by upgrading to up-to-date distribution version) or use some other server installation method.

+ +

TLS

+ +

Don't forget to configure TLS, + which is required for secure usage!

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache.html new file mode 100644 index 000000000..0793b6ab0 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache.html @@ -0,0 +1,106 @@ + + + + + + + + Apache + + + +
+

Apache

+ +
+

I've assumed you have created a DNS A record for trilium.yourdomain.com that + you want to use for your Trilium server.

+
    +
  1. +

    Download docker image and create container

    +
     docker pull triliumnext/notes:[VERSION]
    + docker create --name trilium -t -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:[VERSION]
    +
  2. +
  3. +

    Configure Apache proxy and websocket proxy

    +
      +
    1. +

      Enable apache proxy modules

      +
       a2enmod ssl
      + a2enmod proxy
      + a2enmod proxy_http
      + a2enmod proxy_wstunnel
      +
    2. +
    3. +

      Create a new let's encrypt certificate

      +
       sudo certbot certonly -d trilium.mydomain.com
      +

      Choose standalone (2) and note the location of the created certificates + (typically /etc/letsencrypt/live/...)

      +
    4. +
    5. +

      Create a new virtual host file for apache (you may want to use apachectl -S to + determine the server root location, mine is /etc/apache2)

      +
       sudo nano /etc/apache2/sites-available/trilium.yourdomain.com.conf
      +

      Paste (and customize) the following text into the configuration file

      +
       
      +     ServerName http://trilium.yourdomain.com
      +     RewriteEngine on
      +         RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
      + 
      + 
      +     ServerName https://trilium.yourdomain.com
      +     RewriteEngine On
      +     RewriteCond %{HTTP:Connection} Upgrade [NC]
      +     RewriteCond %{HTTP:Upgrade} websocket [NC]
      +     RewriteRule /(.*) ws://localhost:8080/$1 [P,L]
      +     AllowEncodedSlashes NoDecode
      +     ProxyPass / http://localhost:8080/ nocanon
      +     ProxyPassReverse / http://localhost:8080/
      +     SSLCertificateFile /etc/letsencrypt/live/trilium.yourdomain.com/fullchain.pem
      +     SSLCertificateKeyFile /etc/letsencrypt/live/trilium.yourdomain.com/privkey.pem
      +     Include /etc/letsencrypt/options-ssl-apache.conf
      + 
      +
    6. +
    7. +

      Enable the virtual host with sudo a2ensite trilium.yourdomain.com.conf +

      +
    8. +
    9. +

      Reload apache2 with sudo systemctl reload apache2 +

      +
    10. +
    +
  4. +
  5. +

    Create and enable a systemd service to start the docker container on boot

    +
      +
    1. +

      Create a new empty file called /lib/systemd/system/trilium.service with + the contents

      +
       [Unit]
      + Description=Trilium Server
      + Requires=docker.service
      + After=docker.service
      +
      + [Service]
      + Restart=always
      + ExecStart=/usr/bin/docker start -a trilium
      + ExecStop=/usr/bin/docker stop -t 2 trilium
      +
      + [Install]
      + WantedBy=local.target
      +
    2. +
    3. +

      Install, enable and start service

      +
       sudo systemctl daemon-reload
      + sudo systemctl enable trilium.service
      + sudo systemctl start trilium.service
      +
    4. +
    +
  6. +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx.html new file mode 100644 index 000000000..6f427fd98 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx.html @@ -0,0 +1,67 @@ + + + + + + + + Nginx + + + +
+

Nginx

+ +
+

Configure Nginx proxy and HTTPS. The operating system here is Ubuntu 18.04.

+
    +
  1. +

    Download Nginx and remove Apache2

    +
    sudo apt-get install nginx
    +sudo apt-get remove apache2
    +
  2. +
  3. +

    Create configure file

    +
    cd /etc/nginx/conf.d
    +vim default.conf
    +
  4. +
  5. +

    Fill the file with the context shown below, part of the setting show be + changed. Then you can enjoy your web with HTTPS forced and proxy.

    +
    # This part is for proxy and HTTPS configure
    +server {
    +    listen 443 ssl;
    +    server_name trilium.example.net; #change trilium.example.net to your domain without HTTPS or HTTP.
    +    ssl_certificate /etc/ssl/note/example.crt; #change /etc/ssl/note/example.crt to your path of crt file.
    +    ssl_certificate_key /etc/ssl/note/example.net.key; #change /etc/ssl/note/example.net.key to your path of key file.
    +    ssl_session_cache builtin:1000 shared:SSL:10m;
    +    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    +    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    +    ssl_prefer_server_ciphers on;
    +    access_log /var/log/nginx/access.log; #check the path of access.log, if it doesn't fit your file, change it
    +    
    +    location / {
    +        proxy_set_header Host $host;
    +        proxy_set_header X-Real-IP $remote_addr;
    +        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    +        proxy_set_header X-Forwarded-Proto $scheme;
    +        proxy_set_header Upgrade $http_upgrade;
    +        proxy_set_header Connection "upgrade";
    +        proxy_pass http://127.0.0.1:8080; # change it to a different port if non-default is used
    +        proxy_read_timeout 90;
    +        proxy_redirect http://127.0.0.1:8080 https://trilium.example.net; # change them based on your IP, port and domain
    +    }
    +}
    +# This part is for HTTPS forced
    +server {
    +            listen 80;
    +            server_name trilium.example.net; # change to your domain
    +            return 301 https://$server_name$request_uri;
    +}
    +
  6. +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication.html new file mode 100644 index 000000000..8ffd1ee58 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication.html @@ -0,0 +1,124 @@ + + + + + + + + Multi-Factor Authentication + + + +
+

Multi-Factor Authentication

+ +
+

Note: This feature has not been merged yet, so it is not available. +

+

Multi-factor authentication (MFA) is a security process that requires + users to provide two or more verification factors to gain access to a system, + application, or account. This adds an extra layer of protection beyond + just using a password.

+

By requiring more than one verification method, MFA helps reduce the risk + of unauthorized access, even if someone has obtained your password. It’s + highly recommended for securing sensitive information stored in your notes.

+

Warning! OpenID and TOTP cannot be both used at the same time!

+ +

Log in with your Google Account with OpenID!

+ +

OpenID is a standardized way to let you log into websites using an account + from another service, like Google, to verify your identity.

+ +

Why Time-based One Time Passwords?

+ +

TOTP (Time-Based One-Time Password) is a security feature that generates + a unique, temporary code on your device, like a smartphone, which changes + every 30 seconds. You use this code, along with your password, to log into + your account, making it much harder for anyone else to access them.

+ +

Setup

+ + +

TOTP

+ +
    +
  1. +

    Start Trilium Notes normally.

    +
  2. +
  3. +

    Go to "Menu" -> "Options" -> "MFA"

    +
  4. +
  5. +

    Click the "Generate TOTP Secret" button

    +
  6. +
  7. +

    Copy the generated secret to your authentication app/extension

    +
  8. +
  9. +

    Set an environment variable "TOTP_SECRET" as the generated secret. Environment + variables can be set with a .env file in the root directory, by defining + them in the command line, or with a docker container.

    +
    # .env in the project root directory
    +TOTP_ENABLED="true"
    +TOTP_SECRET="secret"
    # Terminal/CLI
    +export TOTP_ENABLED="true"
    +export TOTP_SECRET="secret"
    # Docker
    +docker run -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data -e TOTP_ENABLED="true" -e TOTP_SECRET="secret" triliumnext/notes:[VERSION]
    +
  10. +
  11. +

    Restart Trilium

    +
  12. +
  13. +

    Go to "Options" -> "MFA"

    +
  14. +
  15. +

    Click the "Generate Recovery Codes" button

    +
  16. +
  17. +

    Save the recovery codes. Recovery codes can be used once in place of the + TOTP if you loose access to your authenticator. After a rerecovery code + is used, it will show the unix timestamp when it was used in the MFA options + tab.

    +
  18. +
  19. +

    Load the secret into an authentication app like google authenticator

    +
  20. +
+ +

OpenID

+ +

Currently only compatible with Google. Other services like Authentik and Auth0 are planned on being added. +

+

In order to setup OpenID, you will need to setup a authentication provider. + This requires a bit of extra setup. Follow these instructions to + setup an OpenID service through google.

+

Set an environment variable "SSO_ENABLED" to true and add the client ID + and secret you obtained from google. Environment variables can be set with + a .env file in the root directory, by defining them in the command line, + or with a docker container.

+ +

.env File

+ +
# .env in the project root directory
+SSO_ENABLED="true"
+BASE_URL="http://localhost:8080"
+CLIENT_ID=
+SECRET=
+

Environment variable (linux)

+ +
export SSO_ENABLED="true"
+export BASE_URL="http://localhost:8080"
+export CLIENT_ID=
+export SECRET=
+

Docker

+ +
docker run -d -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data -e SSO_ENABLED="true" -e BASE_URL="http://localhost:8080" -e CLIENT_ID= -e SECRET= triliumnext/notes:[VERSION]
+

After you restart Trilium Notes, you will be redirected to Google's account + selection page. Login to an account and Trilium Next will bind to that + account, allowing you to login with it.

+

You can now login using your google account.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Reverse proxy setup.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Reverse proxy setup.html new file mode 100644 index 000000000..2a0e9d453 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Reverse proxy setup.html @@ -0,0 +1,19 @@ + + + + + + + + Reverse proxy setup + + + +
+

Reverse proxy setup

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/TLS Configuration.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/TLS Configuration.html new file mode 100644 index 000000000..81ed162d1 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/TLS Configuration.html @@ -0,0 +1,73 @@ + + + + + + + + TLS Configuration + + + +
+

TLS Configuration

+ +
+

Configuring TLS is essential for server installation in + Trilium. This guide details the steps to set up TLS within Trilium itself.

+

For a more robust solution, consider using TLS termination with a reverse + proxy (recommended, e.g., Nginx). You can follow a guide like this for + such setups.

+ +

Obtaining a TLS Certificate

+ +

You have two options for obtaining a TLS certificate:

+ + +

Modifying config.ini

+ +

Once you have your certificate, modify the config.ini file + in the data directory to configure + Trilium to use it:

+
[Network]
+port=8080
+# Set to true for TLS/SSL/HTTPS (secure), false for HTTP (insecure).
+https=true
+# Path to the certificate (run "bash bin/generate-cert.sh" to generate a self-signed certificate).
+# Relevant only if https=true
+certPath=/[username]/.acme.sh/[hostname]/fullchain.cer
+keyPath=/[username]/.acme.sh/[hostname]/example.com.key
+

You can also review the configuration file + to provide all config.ini values as environment variables instead.

+

The above example shows how this is set up in an environment where the + certificate was generated using Let's Encrypt's ACME utility. Your paths + may differ. For Docker installations, ensure these paths are within a volume + or another directory accessible by the Docker container, such as /home/node/trilium-data/[DIR IN DATA DIRECTORY].

+

After configuring config.ini, restart Trilium and access the + hostname using "https".

+ +

Self-Signed Certificate

+ +

If you opt to use a self-signed certificate for your server instance, + note that the desktop instance will not trust it by default.

+

To bypass this, disable certificate validation by setting the following + environment variable (for Linux):

+
export NODE_TLS_REJECT_UNAUTHORIZED=0
+trilium
+

Trilium provides scripts to start in this mode, such as trilium-no-cert-check.bat for + Windows.

+

Warning: Disabling TLS certificate validation is insecure. + Proceed only if you fully understand the implications.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html new file mode 100644 index 000000000..64e298656 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html @@ -0,0 +1,134 @@ + + + + + + + + Synchronization + + + +
+

Synchronization

+ +
+

Trilium is an offline-first note-taking application that stores all data + locally on the desktop client. However, it also offers the option to set + up synchronization with a server instance, allowing multiple desktop clients + to sync with a central server. This creates a star-shaped topology:

+

+ +

+

In this setup, a central server (referred to as the sync server) + and multiple client (or desktop) instances synchronize with + the sync server. Once configured, synchronization is automatic and ongoing, + requiring no manual intervention.

+ +

Setting Up Synchronization

+ + +

Security Considerations

+ +

Setting up the server securely is critical and can be complex. It is crucial + to use a valid TLS certificate (HTTPS) + rather than an unencrypted HTTP connection to ensure security and avoid + potential vulnerabilities.

+ +

Synchronizing a Desktop Instance with a Sync Server

+ +

This method is used when you already have a desktop instance of Trilium + and want to set up a sync server on your web host.

+
    +
  1. Server Deployment: Ensure your server instance is deployed + but uninitialized.
  2. +
  3. Desktop Configuration: Open your desktop instance, navigate + to Options -> Sync tab -> Sync configuration, and set the "Server + instance address" to your sync server's address. Click Save.
  4. +
+

+ screenshot of the sync settings options modal +

+
    +
  1. Testing Sync: Click the "Test sync" button to verify + the connection to the sync server. If successful, the client will start + pushing all data to the server instance. This process may take some time, + but you can continue using Trilium. Periodically check the server instance + to confirm when the sync is complete. Once finished, you should see the + login screen on the server.
  2. +
+ +

Synchronizing a Desktop Instance from a Sync Server

+ +

This method is used when you already have a sync server and want to configure + a new desktop instance to sync with it.

+
    +
  1. Desktop Setup: Follow the desktop installation page.
  2. +
  3. Initial Configuration: When prompted, choose the option + to set up sync with a sync server.
  4. +
+

+ screenshot of the sync from server setup page +

+
    +
  1. Server Details: Configure the Trilium server address + and enter the correct username and password for authentication.
  2. +
  3. Finish Setup: Click the "Finish setup" button. If successful, + you will see the following screen:
  4. +
+

+ screenshot of the sync page +

+

Once synchronization is complete, you will be automatically redirected + to the Trilium application.

+ +

Proxy Configuration

+ +

Two proxy setups are supported:

+ + +

Troubleshooting

+ + +

Date/Time Synchronization

+ +

For successful synchronization, both client and server must have the same + date and time, with a tolerance of up to five minutes.

+ +

Certificate Issues

+ +

When using TLS, Trilium will verify the server certificate. If verification + fails (e.g., due to self-signed certificates or certain corporate proxies), + you can run the Trilium client with the NODE_TLS_REJECT_UNAUTHORIZED environment + variable set to 0:

+
export NODE_TLS_REJECT_UNAUTHORIZED=0
+

This will disable TLS certificate verification, significantly reducing + security and exposing the setup to MITM attacks. It is strongly recommended + to use a valid signed server certificate. Newer Trilium versions include + a script called trilium-no-cert-check.sh for this purpose.

+ +

Conflict Resolution

+ +

If you edit the same note on multiple instances before synchronization, + Trilium resolves conflicts by retaining the newer change and discarding + the older one. The older version remains accessible in note revisions, + allowing data recovery if needed.

+ +

Hash Check

+ +

After each synchronization, Trilium computes a hash of all synced data + on both the client and the sync server. If there is a discrepancy, Trilium + will automatically initiate a recovery mechanism to resolve the issue.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization_image.png new file mode 100644 index 000000000..344262a9a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Upgrading TriliumNext.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Upgrading TriliumNext.html new file mode 100644 index 000000000..3d5a32526 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Upgrading TriliumNext.html @@ -0,0 +1,51 @@ + + + + + + + + Upgrading TriliumNext + + + +
+

Upgrading TriliumNext

+ +
+

This document outlines the steps required to upgrade Trilium to a new + release version.

+ +

How to Upgrade

+ +

Trilium does not support built-in automatic upgrades; all updates must + be performed manually. The upgrade process varies depending on the installation + method:

+ + +

Database Compatibility and Migration

+ +

Upon startup, Trilium will automatically migrate the database to + the new version. Note that after migration, older versions of Trilium will + be unable to read the database. If you need to revert to a previous version + of Trilium and its database, you can restore the backup that + is created prior to migration.

+ +

Sync Compatibility

+ +

The synchronization protocol used by + Trilium is versioned, requiring all members of the sync cluster to use + the same protocol version. Therefore, when upgrading to a new version, + you may need to upgrade all instances in the sync cluster. Changes to the + sync protocol version are typically indicated on the release page.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html new file mode 100644 index 000000000..3bf05d417 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html @@ -0,0 +1,68 @@ + + + + + + + + Web Clipper + + + +
+

Web Clipper

+ +
+

+ +

+

Trilium Web Clipper is a web browser extension which allows user to clip + text, screenshots, whole pages and short notes and save them directly to + Trilium Notes.

+

Project is hosted here.

+

Firefox and Chrome are supported browsers, but the chrome build should + work on other chromium based browsers as well.

+ +

Functionality

+ + +

Trilium will save these clippings as a new child note under a "clipper + inbox" note.

+

By default, that's the day note but + you can override that by setting the label clipperInbox, + on any other note.

+

If there's multiple clippings from the same page (and on the same day), + then they will be added to the same note.

+

Extension is available from: +

+ + +

Configuration

+ +

The extension needs to connect to a running Trilium instance. By default, + it scans a port range on the local computer to find a desktop Trilium instance.

+

It's also possible to configure the server address + if you don't run the desktop application, or want it to work without the + desktop application running.

+ +

Username

+ +

Older versions of Trilium (before 0.50) required username & password + to authenticate, but this is no longer the case. You may enter anything + in that field, it will not have any effect.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper_image.png new file mode 100644 index 000000000..96d6ead20 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/10_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/10_Geo map_image.png new file mode 100644 index 000000000..f76abe4a4 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/10_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/11_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/11_Geo map_image.png new file mode 100644 index 000000000..5982cc31c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/11_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/12_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/12_Geo map_image.png new file mode 100644 index 000000000..9292d9bb9 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/12_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/13_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/13_Geo map_image.png new file mode 100644 index 000000000..0c1519f2c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/13_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/14_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/14_Geo map_image.png new file mode 100644 index 000000000..099642560 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/14_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/15_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/15_Geo map_image.png new file mode 100644 index 000000000..debb47ce3 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/15_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/16_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/16_Geo map_image.png new file mode 100644 index 000000000..23209e0ad Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/16_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/17_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/17_Geo map_image.png new file mode 100644 index 000000000..9bb397516 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/17_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/18_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/18_Geo map_image.png new file mode 100644 index 000000000..4e32110f8 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/18_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/1_Book_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/1_Book_image.png new file mode 100644 index 000000000..ba4e1dd7a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/1_Book_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/1_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/1_Geo map_image.png new file mode 100644 index 000000000..50401dd2a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/1_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/2_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/2_Geo map_image.png new file mode 100644 index 000000000..97879b76a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/2_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/3_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/3_Geo map_image.png new file mode 100644 index 000000000..1b88e14e6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/3_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/4_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/4_Geo map_image.png new file mode 100644 index 000000000..59d0cbbac Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/4_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/5_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/5_Geo map_image.png new file mode 100644 index 000000000..128e1df79 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/5_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/6_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/6_Geo map_image.png new file mode 100644 index 000000000..e97de57e4 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/6_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/7_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/7_Geo map_image.png new file mode 100644 index 000000000..adec6e898 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/7_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/8_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/8_Geo map_image.png new file mode 100644 index 000000000..c7bb7f704 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/8_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/9_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/9_Geo map_image.png new file mode 100644 index 000000000..4552aaf59 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/9_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book.html new file mode 100644 index 000000000..703a2031c --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book.html @@ -0,0 +1,51 @@ + + + + + + + + Book + + + +
+

Book

+ +
+

A Book Note in Trilium is a special type of note designed + to display the contents of its child notes sequentially, creating a linear, + book-like reading experience. This format is particularly useful for viewing + multiple smaller notes in a cohesive, continuous manner.

+

+ +

+

In the example above, the "node.js" note on the left panel contains several + child notes. The right panel displays the content of these child notes + as a single continuous document.

+ +

Features

+ + +

Linear Display

+ +

The Book Note format compiles the contents of all child notes into one + continuous view. This makes it ideal for reading extensive information + broken into smaller, manageable segments.

+ +

Grid View Option

+ +

Trilium also offers a "Grid View" option within the Book Note properties. + This view presents the child notes in a grid format, allowing for a more + visual navigation experience.

+

+ +

+

Switching between these views can be easily managed through the Book Note's + settings (or viewType attribute), allowing users to choose the + format that best suits their reading or navigation preferences.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png new file mode 100644 index 000000000..d588ed568 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png new file mode 100644 index 000000000..acf382206 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png new file mode 100644 index 000000000..23a383270 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png new file mode 100644 index 000000000..2dea53b64 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png new file mode 100644 index 000000000..e050184a7 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png new file mode 100644 index 000000000..46698faac Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png new file mode 100644 index 000000000..d3d64f75c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png new file mode 100644 index 000000000..53ac5632f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png new file mode 100644 index 000000000..aa9e445ad Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png new file mode 100644 index 000000000..b594af6a6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png new file mode 100644 index 000000000..d8d8f87c1 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png new file mode 100644 index 000000000..fceb0563c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png new file mode 100644 index 000000000..d46f327a2 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png new file mode 100644 index 000000000..052cddb18 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png new file mode 100644 index 000000000..71d6c38f1 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png new file mode 100644 index 000000000..57964953a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png new file mode 100644 index 000000000..f60aa0acc Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png new file mode 100644 index 000000000..71f7d2dc3 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png new file mode 100644 index 000000000..7e97245a6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html new file mode 100644 index 000000000..3cf2b4af8 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html @@ -0,0 +1,331 @@ + + + + + + + + Calendar View + + + +
+

Calendar View

+ +
+

+ +

+

The Calendar view of Book notes will display each child note in a calendar + that has a start date and optionally an end date, as an event.

+

Unlike other Book view types, the Calendar view also allows some kind + of interaction, such as moving events around as well as creating new ones.

+ +

Creating a calendar

+ + + + + + + + + + + + + + + + + + + + + +
1 + + The Calendar View works only for Book note types. To create a new note, + right click on the note tree on the left and select Insert note after, + or Insert child note and then select Book.
2 + + Once created, the “View type” of the Book needs changed to “Calendar”, + by selecting the “Book Properties” tab in the ribbon.
+ +

Creating a new event/note

+ + + +

Interacting with events

+ + + +

Configuring the calendar

+ +

The following attributes can be added to the book type:

+ + + + + + + + + + + + + + + + + + + + + +
NameDescription
#calendar:hideWeekends + When present (regardless of value), it will hide Saturday and Sundays + from the calendar.
#calendar:weekNumbers + When present (regardless of value), it will show the number of the week + on the calendar.
~child:template + Defines the template for newly created notes in the calendar (via dragging + or clicking).
+

In addition, the first day of the week can be either Sunday or Monday + and can be adjusted from the application settings.

+ +

Configuring the calendar events

+ +

For each note of the calendar, the following attributes can be used:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
#startDate + The date the event starts, which will display it in the calendar. The + format is YYYY-MM-DD (year, month and day separated by a minus + sign).
#endDate + Similar to startDate, mentions the end date if the event spans + across multiple days. The date is inclusive, so the end day is also considered. + The attribute can be missing for single-day events.
#color + Displays the event with a specified color (named such as red, gray or + hex such as #FF0000). This will also change the color of the + note in other places such as the note tree.
#calendar:color + Similar to #color, but applies the color only for the event + in the calendar and not for other places such as the note tree.
#iconClass + If present, the icon of the note will be displayed to the left of the + event title.
#calendar:title + Changes the title of an event to point to an attribute of the note other + than the title, either a label (e.g. #assignee) or a relation + (e.g. ~for). See Advanced use-cases for more information.
#calendar:promotedAttributes + Allows displaying the value of one or more promoted attributes in the + calendar like this: + +
+
<br>#label:weight="promoted,number,single,precision=1"<br>#label:mood="promoted,alias=Mood,single,text"<br>#calendar:promotedAttributes="label:weight,label:mood" <br> +
+
It can also be used with relations, case in which it will display the + title of the target note: +
+
<br>#relation:assignee="promoted,alias=Assignee,single,text"<br>#calendar:promotedAttributes="relation:assignee" <br>~assignee=@My assignee <br> +
#calendar:startDate + Allows using a different label to represent the start date, other than #startDate (e.g. #expiryDate). + The label name must be prefixed with #. If the label is not + defined for a note, the default will be used instead.
#calendar:endDate + Allows using a different label to represent the start date, other than #endDate. + The label name must be prefixed with #. If the label is not + defined for a note, the default will be used instead.
+ +

How the calendar works

+ +

+ The calendar displays all the child notes of the book that have a #startDate. + An #endDate can optionally be added.

+

If editing the start date and end date from the note itself is desirable, + the following attributes can be added to the book note:

+
#viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date" #label:endDate(inheritable)="promoted,alias=End Date,single,date" #hidePromotedAttributes 
+

This will result in:

+

+ +

+

When not used in a Journal, the calendar is recursive. That is, it will + look for events not just in its child notes but also in the children of + these child notes.

+ +

Use-cases

+ + +

Using with the Journal / calendar

+ +

It is possible to integrate the calendar view into the Journal with day + notes. In order to do so change the note type of the Journal note (calendar + root) to Book and then select the Calendar View.

+

Based on the #calendarRoot (or #workspaceCalendarRoot) + attribute, the calendar will know that it's in a calendar and apply the + following:

+ +

+ +

+ +

Using a different attribute as event title

+ +

By default, events are displayed on the calendar by their note title. + However, it is possible to configure a different attribute to be displayed + instead.

+

To do so, assign #calendar:title to the child note (not the + calendar/book note), with the value being #name where name can + be any label. The attribute can also come through inheritance such as a + template attribute. If the note does not have the requested label, the + title of the note will be used instead.

+ + + + + + + + + + + + + +
+ + + +
+ +

Using a relation attribute as event title

+ +

Similarly to using an attribute, use #calendar:title and set + it to ~name where name is the name of the relation + to use.

+

Moreover, if there are more relations of the same name, they will be displayed + as multiple events coming from the same note.

+ + + + + + + + + + + + + +
+ + + +
+

Note that it's even possible to have a #calendar:title on the + target note (e.g. “John Smith”) which will try to render an attribute of + it. Note that it's not possible to use a relation here as well for safety + reasons (an accidental recursion  of attributes could cause the application + to loop infinitely).

+ + + + + + + + + + + + + +
+ + + +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View_image.png new file mode 100644 index 000000000..bec9d93e1 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book_image.png new file mode 100644 index 000000000..3e057b562 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Canvas.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Canvas.html new file mode 100644 index 000000000..e1fbc7799 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Canvas.html @@ -0,0 +1,27 @@ + + + + + + + + Canvas + + + +
+

Canvas

+ +
+

Available since Trilium v0.52.

+

Canvas notes use the Excalidraw library to allow handwritten notes with + mouse, pen or touch on an infinite canvas. It also supports basic diagramming, + text and graphics input.

+

+ grafik +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Canvas_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Canvas_image.png new file mode 100644 index 000000000..4ad24adf4 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Canvas_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code.html new file mode 100644 index 000000000..b1b6dc876 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code.html @@ -0,0 +1,19 @@ + + + + + + + + Code + + + +
+

Code

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map.html new file mode 100644 index 000000000..959bcb9ee --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map.html @@ -0,0 +1,303 @@ + + + + + + + + Geo map + + + +
+

Geo map

+ +
+

Creating a new geo map

+ + + + + + + + + + + + + + + + + + + + + +
1 + + Right click on any note on the note tree and select Insert child noteGeo Map (beta).
2 + + By default the map will be empty and will show the entire world.
+ +

Repositioning the map

+ + +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1To create a marker, first navigate to the desired point on the map. Then + press the + button on the top-right of the map. +
+
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.
+ +

How the location of the markers is stored

+ +

The location of a marker is stored in the #geolocation attribute + of the child notes:

+

+ +

+

This value can be added manually if needed. The value of the attribute + is made up of the latitude and longitude separated by a comma.

+ +

Repositioning markers

+ +

It's possible to reposition existing markers by simply drag and dropping + them to the new destination.

+

As soon as the mouse is released, the new position is saved.

+

If moved by mistake, there is currently no way to undo the change. If + the mouse was not yet released, it's possible to force a refresh of the + page (Ctrl+R or Meta+R) to cancel it.

+ +

Interaction with the markers

+ + + +

Icon and color of the markers

+ +

![image](8_Geo map_image.png)

+

The markers will have the same icon as the note.

+

It's possible to add a custom color to a marker by assigning them a #color attribute + such as #color=green.

+ +

Adding the coordinates manually

+ +

In a nutshell, create a child note and set the #geolocation attribute + to the coordinates.

+

The value of the attribute is made up of the latitude and longitude separated + by a comma.

+ +

Adding from Google Maps

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
1 + + Go to Google Maps on the web and look for a desired location, right click + on it and a context menu will show up. +
+
Simply click on the first item displaying the coordinates and they will + be copied to clipboard. +
+
Then paste the value inside the text box into the #geolocation attribute + of a child note of the map (don't forget to surround the value with a " character).
2 + + In Trilium, create a child note under the map.
3 + + And then go to Owned Attributes and type #geolocation=", then + paste from the clipboard as-is and then add the ending " character. + Press Enter to confirm and the map should now be updated to contain the + new note.
+ +

Adding from OpenStreetMap

+ +

Similarly to the Google Maps approach:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1 + + Go to any location on openstreetmap.org and right click to bring up the + context menu. Select the “Show address” item.
2 + + The address will be visible in the top-left of the screen, in the place + of the search bar. +
+
Select the coordinates and copy them into the clipboard.
3 + + Simply paste the value inside the text box into the #geolocation attribute + of a child note of the map and then it should be displayed on the map.
+ +

Adding GPS tracks (.gpx)

+ +

Trilium has basic support for displaying GPS tracks on the geo map.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1 + + To add a track, simply drag & drop a .gpx file inside the geo map + in the note tree.
2 + + In order for the file to be recognized as a GPS track, it needs to show + up as application/gpx+xml in the File type field.
3 + + When going back to the map, the track should now be visible. +
+
The start and end points of the track are indicated by the two blue markers.
+ +

Troubleshooting

+ +

+ +

+ +

Grid-like artifacts on the map

+ +

This occurs if the application is not at 100% zoom which causes the pixels + of the map to not render correctly due to fractional scaling. The only + possible solution is to set the UI zoom at 100% (default keyboard shortcut + is Ctrl+0).

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map_image.png new file mode 100644 index 000000000..5639d80ae Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html new file mode 100644 index 000000000..bdca0dd93 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html @@ -0,0 +1,55 @@ + + + + + + + + Mermaid Diagrams + + + +
+

Mermaid Diagrams

+ +
+

Trilium supports Mermaid, which adds support for various diagrams such + as flowchart, sequence diagram, class diagram, state diagram, pie charts, + etc., all using a text description of the chart instead of manually drawing + the diagram.

+

For the official documentation of Mermaid.js see mermaid.js.org/intro/.

+ +

ELK layout engine

+ +

Mermaid supports a different layout engine which supports slightly more + complex diagrams, called the Eclipse Layout Kernel (ELK). + Trilium has support for these as well, but it's not enabled by default.

+

In order to activate ELK for any diagram, insert the following YAML frontmatter + right at the beginning of the diagram:

+
---
+config:
+  layout: elk
+---
+ + + + + + + + + + + + + +
With ELK offWith ELK on
+ + + +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off.txt b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off.txt new file mode 100644 index 000000000..353f1ded4 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off.txt @@ -0,0 +1,14 @@ +--- +title: Interfaces for B +--- +flowchart LR +A-->|"Guarantee"|B +C-->|"User attributes"|B +C-.->|"Master data"|B +C-->|"Exchange Rate"|B +C-->|"Profit Centers"|B +C-->|"Vendor Partners"|B +C-->|"Work Situation"|B +C-->|"Customer"|B +C-->|"Profit Centers"|B +B-->|"Guarantee"|C \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off_mermaid-export.svg b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off_mermaid-export.svg new file mode 100644 index 000000000..2934db9da --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off_mermaid-export.svg @@ -0,0 +1 @@ +

Guarantee

User attributes

Master data

Exchange Rate

Profit Centers

Vendor Partners

Work Situation

Customer

Profit Centers

Guarantee

A

B

C

Interfaces for B
\ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on.txt b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on.txt new file mode 100644 index 000000000..4298215d0 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on.txt @@ -0,0 +1,16 @@ +--- +title: Interfaces for B +config: + layout: elk +--- +flowchart LR +A-->|"Guarantee"|B +C-->|"User attributes"|B +C-.->|"Master data"|B +C-->|"Exchange Rate"|B +C-->|"Profit Centers"|B +C-->|"Vendor Partners"|B +C-->|"Work Situation"|B +C-->|"Customer"|B +C-->|"Profit Centers"|B +B-->|"Guarantee"|C \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on_mermaid-export.svg b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on_mermaid-export.svg new file mode 100644 index 000000000..d63356ec4 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on_mermaid-export.svg @@ -0,0 +1 @@ +

A

B

C

Guarantee

User attributes

Master data

Exchange Rate

Profit Centers

Vendor Partners

Work Situation

Customer

Profit Centers

Guarantee

Interfaces for B
\ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mind Map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mind Map.html new file mode 100644 index 000000000..ce5b0a2ff --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mind Map.html @@ -0,0 +1,19 @@ + + + + + + + + Mind Map + + + +
+

Mind Map

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Note Map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Note Map.html new file mode 100644 index 000000000..3fe7b46f0 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Note Map.html @@ -0,0 +1,19 @@ + + + + + + + + Note Map + + + +
+

Note Map

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Relation Map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Relation Map.html new file mode 100644 index 000000000..609c125bb --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Relation Map.html @@ -0,0 +1,19 @@ + + + + + + + + Relation Map + + + +
+

Relation Map

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html new file mode 100644 index 000000000..fcebc8389 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html @@ -0,0 +1,19 @@ + + + + + + + + Render Note + + + +
+

Render Note

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Saved Search.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Saved Search.html new file mode 100644 index 000000000..091662561 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Saved Search.html @@ -0,0 +1,34 @@ + + + + + + + + Saved Search + + + +
+

Saved Search

+ +
+

Trilium allows you to save common searches as notes within the note tree. + The search results will appear as sub-notes under these "saved search" + notes. Here is an example of how it works:

+

+ save-search +

+ +

Location

+ +

By default, saved searches are stored in the day note. However, you can + designate a different note to store saved searches by marking it with the #searchHome label. + Additionally, for workspaces, + you can use the #workspaceSearchHome label to specify a storage + location for saved searches within that workspace.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text.html new file mode 100644 index 000000000..385ba3a3c --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text.html @@ -0,0 +1,134 @@ + + + + + + + + Text + + + +
+

Text

+ +
+

Trilium utilizes the powerful CKEditor 5 as + its text editing component.

+ +

Formatting Options

+ +

The Trilium text note interface does not display toolbars or formatting + options by default. These can be accessed by:

+

+ inline note formatting +

+
    +
  1. Selecting text to bring up an inline toolbar.
  2. +
+

+ formating note block2. Clicking on the block toolbar.

+ +

Read-Only vs. Editing Mode

+ +

Text notes are usually opened in edit mode. However, they may open in + read-only mode under the following circumstances:

+ +

In both cases, it is possible to switch back to editable mode using the + button at top right of page.

+

For more information, see Read-Only Notes.

+ +

General Formatting

+ +

Since Trilium uses CKEditor, all of its formatting options are available + here. You may use the graphical toolbar shown above, or enter formatting + such as markdown markdown directly in the text. Examples include:

+ + +

Lists

+ +

See Lists.

+ +

Blocks

+ + + +

Multi-Line Code Blocks

+ +

To create a multi-line code block, start a line with "```[lang]", for + example:

+
if (1 > 2) {
+    console.log("Error in the matrix");
+}
+

Headings

+ +

Create headings by starting a line with ## for heading 2, ### for + heading 3, and so on up to heading 6. Note that # is reserved + for the title.

+ +

Horizontal Line

+ +

Insert a horizontal line by starting a line with ---.

+ +

Markdown & Autoformat

+ +

CKEditor supports a markdown-like editing experience, recognising syntax + and automatically converting it to rich text.

+

+ +

+

Complete documentation for this feature is available in the CKEditor documentation.

+

If autoformatting is not desirable, press CTRL-Z to revert + the text to its original form.

+

Note: The use of # for Heading 1 is not supported because it + is reserved for the title. Start with ## for Heading 2. More + information is available here.

+ +

Math Support

+ +

Trilium provides math support through KaTeX.

+ +

Cutting Selection to Sub-Note

+ +

When editing a document that becomes too large, you can split it into + sub-notes:

+
    +
  1. Select the desired text and cut it to the clipboard.
  2. +
  3. Create a new sub-note and name it.
  4. +
  5. Paste the content from the clipboard into the sub-note.
  6. +
+

Trilium can automate this process. Select some text within the note, and + in the selection toolbar, click the scissors icon for the "cut & pasted + selection to sub-note" action. The heading is automatically detected and + the new sub-note is named accordingly. You can also assign a keyboard shortcut + for this action. This functionality is available through the block toolbar + icon.

+ +

Including a Note

+ +

Text notes can "include" another note as a read only widget. This can + be useful for e.g. including a dynamically generated chart (from scripts + & "render HTML" note) or other more advanced use cases.

+

This functionality is available in the block toolbar icon.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Lists_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Lists_image.png new file mode 100644 index 000000000..fba0cc85c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Lists_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Lists_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Lists_image.png new file mode 100644 index 000000000..32992762a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Lists_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Lists_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Lists_image.png new file mode 100644 index 000000000..8369a03c6 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Lists_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/4_Lists_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/4_Lists_image.png new file mode 100644 index 000000000..ed6f4c37c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/4_Lists_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/5_Lists_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/5_Lists_image.png new file mode 100644 index 000000000..0ab30524b Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/5_Lists_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language.html new file mode 100644 index 000000000..d2e9a9009 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language.html @@ -0,0 +1,33 @@ + + + + + + + + Content language + + + +
+

Content language

+ +
+

A language hint can be provided for text notes. This option informs the + browser or the desktop application about the language the note is written + in (for example this might help with spellchecking), and it also determines + whether the text is displayed from right-to-left for languages such as + Arabic, Hebrew, etc.

+

For more information about right-to-left support, see Right-to-left text notes.

+

To set the language of the content, go to “Basic Properties” and look + for the “Language” field. By default there will be no content languages + set, they can be configured by going to settings or by selecting the “Configure + languages” item in the list.

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language_image.png new file mode 100644 index 000000000..20864f8af Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists.html new file mode 100644 index 000000000..717c19579 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists.html @@ -0,0 +1,91 @@ + + + + + + + + Lists + + + +
+

Lists

+ +
+

There are three types of lists supported by text notes:

+ + +

Keyboard shortcuts

+ + + +

Headings, code blocks within lists

+ +

It possible to add content-level blocks such as headings, code blocks, + tables within lists, as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + First, create a list.
+ + Press Enter to create a new list item.
+ + Press Backspace to get rid of the bullet point. Notice the cursor position.
+ + At this point, insert any desired block-level item such as a code block.
+ + To continue with a new bullet point, press Enter until the cursor moves + to a new blank position.
+ + Press Enter once more to create the new bullet.
+

The same principle applies to all three list types (bullet, numbered and + to-do).

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists_image.png new file mode 100644 index 000000000..30a9511b0 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text_bx-edit-alt.svg b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text_bx-edit-alt.svg new file mode 100644 index 000000000..69dbf5040 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text_bx-edit-alt.svg @@ -0,0 +1 @@ + diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text_image.png new file mode 100644 index 000000000..2ea269012 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Web View.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Web View.html new file mode 100644 index 000000000..386e8dd06 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Web View.html @@ -0,0 +1,48 @@ + + + + + + + + Web View + + + +
+

Web View

+ +
+

Configuration

+ +

A webview needs to know which URL to render, and it can be provided by + setting the webViewSrc attribute, such as:

+
#webViewSrc="https://www.wikipedia.org"
+

Web view on the server vs. Electron

+ +

When accessing Trilium via a browser instead of the desktop application, + the web view will still try to render the content of the desired webpage. + However, since it's running in a browser there are quite a few limitations + as opposed to the desktop one.

+

More specifically, quite a few websites oppose being embedded in another + website (technically they have a non-permisive X-Frame-Options header). + This is not bypassable by Trilium so the page will simply fail to render.

+

You can diagnose this by right clicking the Trilium web page → Inspect + (element) and looking in the “Console” tab for errors such as:

+ +

There are a few websites that do render such as wikipedia.org.

+

Do note that we are also applying some sandboxing constraints on the server + side, so if you have any issues other than the unresolvable X-Frame-Options described + above, feel free to report them.

+

On the desktop side, a different technology is used which bypasses the + constraints of an iframe (webview).

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Quick Start.html b/src/public/app/doc_notes/en/User Guide/User Guide/Quick Start.html new file mode 100644 index 000000000..e33235f62 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Quick Start.html @@ -0,0 +1,61 @@ + + + + + + + + Quick Start + + + +
+

Quick Start

+ +
+

Choose the setup

+ +

Local only desktop/laptop - Allows a single instance on + a desktop and will save the notes locally on that desktop.

+
    +
  1. Desktop installation +
  2. +
+

Server with web only access - Installs the application + on the server and allows access from any web browser on any device, including + mobile.

+
    +
  1. Server installation +
  2. +
  3. Mobile frontend (optional)
  4. +
  5. Deploy %%{WARNING}%%
  6. +
  7. PikaPods managed hosting +
  8. +
+

Combination of server and desktop/laptop - Install the + application on both a server, for web access and data synchronization, + and desktop instance(s). This allows all the data to be stored on the server + and either accessed from the web browser, or the desktop application. The + desktop application will sync and store the data locally so that it can + be used when offline.

+
    +
  1. Server installation +
  2. +
  3. Mobile frontend (optional)
  4. +
  5. Desktop installation +
  6. +
  7. Synchronization +
  8. +
+ +

Basic concepts

+ +
    +
  1. Understand Note +
  2. +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png new file mode 100644 index 000000000..60ed508e2 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Custom app-wide CSS_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Custom app-wide CSS_image.png new file mode 100644 index 000000000..99bb043e2 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Custom app-wide CSS_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png new file mode 100644 index 000000000..59dccde8c Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Custom app-wide CSS_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Custom app-wide CSS_image.png new file mode 100644 index 000000000..57d357a17 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Custom app-wide CSS_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png new file mode 100644 index 000000000..733ac21d1 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png new file mode 100644 index 000000000..a88f2379e Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png new file mode 100644 index 000000000..ab66f9ecf Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme.html b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme.html new file mode 100644 index 000000000..4abe834cf --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme.html @@ -0,0 +1,83 @@ + + + + + + + + Creating a custom theme + + + +
+

Creating a custom theme

+ +
+

Step 1. Find a place to place the themes

+ +

Organization is an important aspect of managing a knowledge base. When + developing a new theme or importing an existing one it's a good idea to + keep them into one place.

+

As such, the first step is to create a new note to gather all the themes.

+

![](4_Creating%20a custom theme_im.png)

+ +

Step 2. Create the theme

+ + + + + + + + + + + + + + + + + + + + + + +
+ + Themes are code notes with a special attribute. Start by creating a new + code note.
![](Creating%20a%20custom theme_im.png)Then change the note type to a CSS code.
![](5_Creating%20a%20custom theme_im.png)In the Owned Attributes section define the #appTheme attribute + to point to any desired name. This is the name that will show up in the + appearance section in settings.
+ +

Step 3. Define the theme's CSS

+ +

As a very simple example we will change the background color of the launcher + pane to a shade of blue.

+

To alter the different variables of the theme:

+
:root {
+	--launcher-pane-background-color: #0d6efd;
+}
+

Step 4. Activating the theme

+ +

Refresh the application (Ctrl+Shift+R is a good way to do so) and go to + settings. You should see the newly created theme:

+

![](1_Creating%20a%20custom theme_im.png)

+

Afterwards the application will refresh itself with the new theme:

+

![](3_Creating%20a%20custom theme_im.png)

+

Do note that the theme will be based off of the legacy theme. To override + that and base the theme on the new TriliumNext theme, see: Theme base (legacy vs. next) +

+ +

Step 5. Making changes

+ +

Simply go back to the note and change according to needs. To apply the + changes to the current window, press Ctrl+Shift+R to refresh.

+

It's a good idea to keep two windows, one for editing and the other one + for previewing the changes.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme_im.png new file mode 100644 index 000000000..f90ec6f54 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme_im.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html new file mode 100644 index 000000000..b791bcc9c --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html @@ -0,0 +1,77 @@ + + + + + + + + Custom app-wide CSS + + + +
+

Custom app-wide CSS

+ +
+

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

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

Seeing the changes

+ +

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

+ +

Example use-case: customizing the printing stylesheet

+ +

When printing a document or exporting as PDF, it is possible to adjust + the style by creating a CSS note that uses the @media selector.

+

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

+
@media print {
+
+	body {
+
+        --main-font-family: serif !important;
+
+        --detail-font-family: var(--main-font-family) !important;
+
+    }
+
+}
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS_image.png new file mode 100644 index 000000000..24f08ad6a Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme.html b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme.html new file mode 100644 index 000000000..902776747 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme.html @@ -0,0 +1,43 @@ + + + + + + + + Customize the Next theme + + + +
+

Customize the Next theme

+ +
+

By default, any custom theme will be based on the legacy light theme. + To use the TriliumNext theme instead, add the #appThemeBase=next attribute + onto the existing theme. The appTheme attribute must also be + present.

+

+ +

+

The appThemeBase label can be set to one of the following values:

+ + +

Overrides

+ +

Do note that the TriliumNext theme has a few more overrides than the legacy + theme, so you might need to suffix !important if the style changes + are not applied.

+
:root {
+	--launcher-pane-background-color: #0d6efd !important;
+}
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme_i.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme_i.png new file mode 100644 index 000000000..83b9d7d10 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme_i.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Reference.html b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Reference.html new file mode 100644 index 000000000..2a8956185 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Reference.html @@ -0,0 +1,202 @@ + + + + + + + + Reference + + + +
+

Reference

+ +
+

Detecting mobile vs. desktop

+ +

The mobile layout is different than the one on the desktop. Use body.mobile and body.desktop to + differentiate between them.

+
body.mobile #root-widget {
+	/* Do something on mobile */
+}
+
+body.desktop #root-widget {
+	/* Do something on desktop */
+}
+

Do note that there is also a “tablet mode” in the mobile layout. For that + particular case media queries are required:

+
@media (max-width: 991px) {
+
+    #launcher-pane {
+
+        /* Do something on mobile layout */
+
+    }
+
+}
+
+
+
+@media (min-width: 992px) {
+
+    #launcher-pane {
+
+        /* Do something on mobile tablet + desktop layout */
+
+    }
+
+}
+

Detecting horizontal vs. vertical layout

+ +

The user can select between vertical layout (the classical one, where + the launcher bar is on the left) and a horizontal layout (where the launcher + bar is on the top and tabs are full-width).

+

Different styles can be applied by using classes at body level:

+
body.layout-vertical #left-pane {
+	/* Do something */
+}
+
+body.layout-horizontal #center-pane {
+	/* Do something else */	
+}
+

The two different layouts use different containers (but they are present + in the DOM regardless of the user's choice), for example #horizontal-main-container and #vertical-main-container can + be used to customize the background of the content section.

+ +

Detecting platform (Windows, macOS) or Electron

+ +

It is possible to add particular styles that only apply to a given platform + by using the classes in body:

+ + + + + + + + + + + + + +
WindowsmacOS
<br>body.platform-win32 {<br> background: red;<br>}<br> + <br>body.platform-darwin {<br> background: red;<br>}<br> +
+

It is also possible to only apply a style if running under Electron (desktop + application):

+
body.electron {
+	background: blue;
+}
+

Native title bar

+ +

It's possible to detect if the user has selected the native title bar + or the custom title bar by querying against body:

+
body.electron.native-titlebar {
+	/* Do something */
+}
+
+body.electron:not(.native-titlebar) {
+	/* Do something else */
+}
+

Native window buttons

+ +

When running under Electron with native title bar off, a feature was introduced + to use the platform-specific window buttons such as the semaphore on macOS.

+

See Native title bar buttons by eliandoran · Pull Request #702 · TriliumNext/Notes for + the original implementation of this feature, including screenshots.

+ +

On Windows

+ +

The colors of the native window button area can be adjusted using a RGB + hex color:

+
body {
+	--native-titlebar-foreground: #ffffff;
+	--native-titlebar-background: #ff0000;
+}
+

It is also possible to use transparency at the cost of reduced hover colors + using a RGBA hex color:

+
body {
+	--native-titlebar-background: #ff0000aa;
+}
+

Note that the value is read when the window is initialized and then it + is refreshed only when the user changes their light/dark mode preference.

+ +

On macOS

+ +

On macOS the semaphore window buttons are enabled by default when the + native title bar is disabled. The offset of the buttons can be adjusted + using:

+
body {
+    --native-titlebar-darwin-x-offset: 12;
+    --native-titlebar-darwin-y-offset: 14 !important;
+}
+

Background/transparency effects on Windows (Mica)

+ +

Windows 11 offers a special background/transparency effect called Mica, + which can be enabled by themes by setting the --background-material variable + at body level:

+
body.electron.platform-win32 {
+	--background-material: tabbed; 
+}
+

The value can be either tabbed (especially useful for the horizontal + layout) or mica (ideal for the vertical layout).

+

Do note that the Mica effect is applied at body level and the + theme needs to make the entire hierarchy (semi-)transparent in order for + it to be visible. Use the TrilumNext theme as an inspiration.

+ +

Note icons, tab workspace accent color

+ +

Theme capabilities are small adjustments done through CSS variables that + can affect the layout or the visual aspect of the application.

+

In the tab bar, to display the icons of notes instead of the icon of the + workspace:

+
:root {
+	--tab-note-icons: true;
+}
+

When a workspace is hoisted for a given tab, it is possible to get the + background color of that workspace, for example to apply a small strip + on the tab instead of the whole background color:

+
.note-tab .note-tab-wrapper {
+    --tab-background-color: initial !important;
+}
+
+.note-tab .note-tab-wrapper::after {
+    content: "";
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: 3px;
+    background-color: var(--workspace-tab-background-color);
+}
+

Custom fonts

+ +

Currently the only way to include a custom font is to use Custom resource providers. + Basically import a font into Trilium and assign it #customResourceProvider=fonts/myfont.ttf and + then import the font in CSS via /custom/fonts/myfont.ttf.

+ +

Dark and light themes

+ +

A light theme needs to have the following CSS:

+
:root {
+	--theme-style: light;
+}
+

if the theme is dark, then --theme-style needs to be dark.

+

If the theme is auto (e.g. supports both light or dark based on prefers-color-scheme) + it must also declare (in addition to setting --theme-style to + either light or dark):

+
:root {
+
+    --theme-style-auto: true;
+
+}
+

This will affect the behavior of the Electron application by informing + the operating system of the color preference (e.g. background effects will + appear correct on Windows).

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting.html b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting.html new file mode 100644 index 000000000..736859d17 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting.html @@ -0,0 +1,96 @@ + + + + + + + + Troubleshooting + + + +
+

Troubleshooting

+ +
+

As Trilium is currently in beta, encountering bugs is to be expected.

+ +

General Quick Fix

+ +

The first step in troubleshooting is often a restart.

+

If you experience an UI issue, the frontend may have entered an inconsistent + state. Reload the application by pressing CTRL-R. This will + reload the frontend.

+

If the issue persists or appears to be a backend problem, restart the + entire application. For the desktop (Electron) build, simply close and + reopen the window. If you're using a Docker build, restart the container.

+ +

Broken Note Crashes Trilium

+ +

Certain problems, such as rendering a note with a faulty script, can cause + Trilium to crash. If Trilium attempts to reload the problematic note upon + restart, it will continue to crash.

+

To resolve this, use the TRILIUM_START_NOTE_ID environment + variable to reset the open tabs to a single specified note ID (e.g., root). + In Linux, you can set it as follows:

+
TRILIUM_START_NOTE_ID=root ./trilium
+

Broken Script Prevents Application Startup

+ +

If a custom script causes Triliumto crash, and it is set as a startup + script or in an active custom widget, + start Triliumin "safe mode" to prevent any custom scripts from executing:

+
TRILIUM_SAFE_MODE=true ./trilium
+

Depending on your Trilium distribution, you may have pre-made scripts + available: trilium-safe-mode.bat and trilium-safe-mode.sh.

+

Once Trilium starts, locate and fix or delete the problematic note.

+ +

Sync and Consistency Checks

+ +

Trilium periodically verifies the logical consistency of the database + (e.g., ensuring every note has a parent). If inconsistencies are detected, + you will be notified via the UI.

+

In such cases, file a bug report and attach an anonymized database if + necessary.

+ +

Restoring Backup

+ +

Trilium makes regular automatic backups. If issues become severe, you + can restore from a backup.

+ +

Forgotten Password

+ +

If you forget your password:

+ +

Access the database file in + the data directory. + Open the document.db file with an SQLite client (e.g., DB Browser) + and execute the following queries:

+
UPDATE options SET value = '77/twC5O00cuQgNC63VK32qOKKYwj21ev3jZDXoytVU=' WHERE name = 'passwordVerificationSalt';
+UPDATE options SET value = '710BMasZCAgibzIc07X4P9Q4TeBd4ONnqJOho+pWcBM=' WHERE name = 'passwordDerivedKeySalt';
+UPDATE options SET value = 'Eb8af1/T57b89lCRuS97tPEl4CwxsAWAU7YNJ77oY+s=' WHERE name = 'passwordVerificationHash';
+UPDATE options SET value = 'QpC8XoiYYeqHPtHKRtbNxfTHsk+pEBqVBODYp0FkPBa22tlBBKBMigdLu5GNX8Uu' WHERE name = 'encryptedDataKey';
+

After executing the changes, commit/write the changes. This sets the password to "password," allowing you to log in again. +

+

For pre-existing protected notes (now unrecoverable), consider deleting + them or exporting the unprotected notes. Then, delete document.db and + start fresh.

+

If you continue using the existing document file, change your password + (Options -> Change Password).

+ +

Reporting Bugs

+ +

Reporting bugs is highly valuable. Here are some tips:

+ +
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database.html b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database.html new file mode 100644 index 000000000..bbf14c5a2 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database.html @@ -0,0 +1,52 @@ + + + + + + + + Anonymized Database + + + +
+

Anonymized Database

+ +
+

+ +

+

In certain scenarios, understanding the structure of a database is crucial + for troubleshooting issues. However, sharing your actual database file + with personal notes is not advisable. To address this, Trilium offers a + feature to anonymize the database. This feature can be accessed via Menu + -> Options -> Advanced tab.

+

This feature creates a copy of your database with all sensitive data removed. + Specifically, it strips out note titles, contents, revisions, history, + and some non-system attributes while retaining the overall structure and + metadata, such as modification dates. After anonymization, the database + undergoes a vacuuming process to + ensure no sensitive data remnants remain in the file. The anonymized database + is saved in the anonymized directory within the data directory, + making it safe to share with bug reports.

+

This will create a copy of your document and remove all sensitive data + (currently note titles, contents, revisions, history and some of the options, + and non-system attributes) while leaving all structure and metadata (e.g. + date of last change). After this is done, the database is VACUUMed to + make sure there's no stale sensitive data in the document file. The resulting + file is stored in anonymized directory (placed in the data directory). + You can safely attach it to a bug report.

+ +

Command Line Anonymization

+ +

If your database is corrupted + to the point where Trilium cannot start, the anonymization process can + still be executed via the command line:

+
node src/anonymize.js
+

Run this command from the directory containing Trilium's source files, + typically found in the resources/app directory for desktop builds.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database_image.png new file mode 100644 index 000000000..fb640c0c9 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs.html b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs.html new file mode 100644 index 000000000..49afb4d6e --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs.html @@ -0,0 +1,73 @@ + + + + + + + + Error logs + + + +
+

Error logs

+ +
+

It's important to provide all available error logs together with bug reports. + This page will show you how to do it.

+ +

Backend logs

+ +

Open data directory, + go to log subdirectory and find the latest log file, e.g. trilium-2022-12-14.log. + You can attach the whole file to the bug report (preferable) or open it + and copy-paste only the last lines / lines you believe are relevant.

+

If you have trouble finding it the log files, there's also an in-app option + in top-left menu button -> Advanced -> Show backend log.

+ +

Frontend logs

+ +

To provide frontend logs, we need to open the Developer Console. Often + the easiest way is to press CTRL-SHIFT-I which should work in + most browsers (and desktop app). Make sure that the error producing action + happened right before you copy&paste the errors, the console is cleared + on app restart.

+

If that doesn't work, then:

+ +

+ +

+

Once you have Dev Tools open, click on "Console" tab:

+

+ +

+

Copy-paste (or screenshot) the logs. It's better to provide not just errors, + but the whole log, which might provide context while analyzing the bug.

+ +

Providing sensitive data

+ +

If you don't feel comfortable attaching the logs or anything sensitive + to the public GitHub issues, feel free to contact the devs in our Matrix + support channel.

+

Use this email to also provide anything which could assist in analysing + the bug - e.g. files/images/ZIPs being imported or anonymized database.

+ +

Exporting note subtree for reproduction

+ +

Often times, bugs manifest themselves in specific notes and having them + would greatly ease reproduction and fixing.

+

In such case, please export the relevant note subtree by right-clicking + it on the left tree, choosing Export - HTML as ZIP:

+

+ +

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs_image.png new file mode 100644 index 000000000..62a034e3f Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Reporting issues.html b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Reporting issues.html new file mode 100644 index 000000000..000fd752e --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Reporting issues.html @@ -0,0 +1,23 @@ + + + + + + + + Reporting issues + + + +
+

Reporting issues

+ +
+

Go to Issues · TriliumNext/Notes and + press “New issue”.

+

If you are reporting a bug, select “Bug Report” and fill in the details.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Synchronization fails with 504.html b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Synchronization fails with 504.html new file mode 100644 index 000000000..a761a1b39 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Synchronization fails with 504.html @@ -0,0 +1,36 @@ + + + + + + + + Synchronization fails with 504 Gateway Timeout + + + +
+

Synchronization fails with 504 Gateway Timeout

+ +
+

Synchronization can sometimes take a long amount of time in order to compute + the items that require update. When running behind a reverse proxy, the + request can time out.

+

The solution is to increase the timeout at proxy level.

+ +

Nginx

+ +

Add the following to the configuration file:

+
proxy_connect_timeout 300;
+proxy_send_timeout 300;
+proxy_read_timeout 300;
+send_timeout 300;
+

And restart the server.

+

See Nginx Proxy Setup for + more information about the Nginx setup.

+

If it still doesn't work, try increasing the timeout.

+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/What's new.html b/src/public/app/doc_notes/en/User Guide/User Guide/What's new.html new file mode 100644 index 000000000..2820a3651 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/What's new.html @@ -0,0 +1,32 @@ + + + + + + + + What's new + + + +
+

What's new

+ +
+
    +
  1. Geo map +
  2. +
  3. Export as PDF +
  4. +
  5. Zen mode +
  6. +
  7. Calendar View +
  8. +
  9. Right-to-Left Support +
  10. +
+
+
+ + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/index.html b/src/public/app/doc_notes/en/User Guide/index.html new file mode 100644 index 000000000..fb16b5640 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/index.html @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/navigation.html b/src/public/app/doc_notes/en/User Guide/navigation.html new file mode 100644 index 000000000..cc4ada9c8 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/navigation.html @@ -0,0 +1,485 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/style.css b/src/public/app/doc_notes/en/User Guide/style.css new file mode 100644 index 000000000..4243d146a --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/style.css @@ -0,0 +1,567 @@ +/* !!!!!! TRILIUM CUSTOM CHANGES !!!!!! */ + +.printed-content .ck-widget__selection-handle, .printed-content .ck-widget__type-around { /* gets rid of triangles: https://github.com/zadam/trilium/issues/1129 */ + display: none; +} + +.page-break { + page-break-after: always; +} + +.printed-content .page-break:after, +.printed-content .page-break > * { + display: none !important; +} + +.ck-content li p { + margin: 0 !important; +} + +/* + * CKEditor 5 (v41.0.0) content styles. + * Generated on Fri, 26 Jan 2024 10:23:49 GMT. + * For more information, check out https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/content-styles.html + */ + +:root { + --ck-color-image-caption-background: hsl(0, 0%, 97%); + --ck-color-image-caption-text: hsl(0, 0%, 20%); + --ck-color-mention-background: hsla(341, 100%, 30%, 0.1); + --ck-color-mention-text: hsl(341, 100%, 30%); + --ck-color-selector-caption-background: hsl(0, 0%, 97%); + --ck-color-selector-caption-text: hsl(0, 0%, 20%); + --ck-highlight-marker-blue: hsl(201, 97%, 72%); + --ck-highlight-marker-green: hsl(120, 93%, 68%); + --ck-highlight-marker-pink: hsl(345, 96%, 73%); + --ck-highlight-marker-yellow: hsl(60, 97%, 73%); + --ck-highlight-pen-green: hsl(112, 100%, 27%); + --ck-highlight-pen-red: hsl(0, 85%, 49%); + --ck-image-style-spacing: 1.5em; + --ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2); + --ck-todo-list-checkmark-size: 16px; +} + +/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */ +.ck-content .table .ck-table-resized { + table-layout: fixed; +} +/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */ +.ck-content .table table { + overflow: hidden; +} +/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */ +.ck-content .table td, +.ck-content .table th { + overflow-wrap: break-word; + position: relative; +} +/* @ckeditor/ckeditor5-table/theme/table.css */ +.ck-content .table { + margin: 0.9em auto; + display: table; +} +/* @ckeditor/ckeditor5-table/theme/table.css */ +.ck-content .table table { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + height: 100%; + border: 1px double hsl(0, 0%, 70%); +} +/* @ckeditor/ckeditor5-table/theme/table.css */ +.ck-content .table table td, +.ck-content .table table th { + min-width: 2em; + padding: .4em; + border: 1px solid hsl(0, 0%, 75%); +} +/* @ckeditor/ckeditor5-table/theme/table.css */ +.ck-content .table table th { + font-weight: bold; + background: hsla(0, 0%, 0%, 5%); +} +/* @ckeditor/ckeditor5-table/theme/table.css */ +.ck-content[dir="rtl"] .table th { + text-align: right; +} +/* @ckeditor/ckeditor5-table/theme/table.css */ +.ck-content[dir="ltr"] .table th { + text-align: left; +} +/* @ckeditor/ckeditor5-table/theme/tablecaption.css */ +.ck-content .table > figcaption { + display: table-caption; + caption-side: top; + word-break: break-word; + text-align: center; + color: var(--ck-color-selector-caption-text); + background-color: var(--ck-color-selector-caption-background); + padding: .6em; + font-size: .75em; + outline-offset: -1px; +} +/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */ +.ck-content .page-break { + position: relative; + clear: both; + padding: 5px 0; + display: flex; + align-items: center; + justify-content: center; +} +/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */ +.ck-content .page-break::after { + content: ''; + position: absolute; + border-bottom: 2px dashed hsl(0, 0%, 77%); + width: 100%; +} +/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */ +.ck-content .page-break__label { + position: relative; + z-index: 1; + padding: .3em .6em; + display: block; + text-transform: uppercase; + border: 1px solid hsl(0, 0%, 77%); + border-radius: 2px; + font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif; + font-size: 0.75em; + font-weight: bold; + color: hsl(0, 0%, 20%); + background: hsl(0, 0%, 100%); + box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +/* @ckeditor/ckeditor5-media-embed/theme/mediaembed.css */ +.ck-content .media { + clear: both; + margin: 0.9em 0; + display: block; + min-width: 15em; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list { + list-style: none; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list li { + position: relative; + margin-bottom: 5px; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list li .todo-list { + margin-top: 5px; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list .todo-list__label > input { + -webkit-appearance: none; + display: inline-block; + position: relative; + width: var(--ck-todo-list-checkmark-size); + height: var(--ck-todo-list-checkmark-size); + vertical-align: middle; + border: 0; + left: -25px; + margin-right: -15px; + right: 0; + margin-left: 0; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content[dir=rtl] .todo-list .todo-list__label > input { + left: 0; + margin-right: 0; + right: -25px; + margin-left: -15px; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list .todo-list__label > input::before { + display: block; + position: absolute; + box-sizing: border-box; + content: ''; + width: 100%; + height: 100%; + border: 1px solid hsl(0, 0%, 20%); + border-radius: 2px; + transition: 250ms ease-in-out box-shadow; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list .todo-list__label > input::after { + display: block; + position: absolute; + box-sizing: content-box; + pointer-events: none; + content: ''; + left: calc( var(--ck-todo-list-checkmark-size) / 3 ); + top: calc( var(--ck-todo-list-checkmark-size) / 5.3 ); + width: calc( var(--ck-todo-list-checkmark-size) / 5.3 ); + height: calc( var(--ck-todo-list-checkmark-size) / 2.6 ); + border-style: solid; + border-color: transparent; + border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0; + transform: rotate(45deg); +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list .todo-list__label > input[checked]::before { + background: hsl(126, 64%, 41%); + border-color: hsl(126, 64%, 41%); +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list .todo-list__label > input[checked]::after { + border-color: hsl(0, 0%, 100%); +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list .todo-list__label .todo-list__label__description { + vertical-align: middle; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox] { + position: absolute; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label > input, +.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input { + cursor: pointer; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label > input:hover::before, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input:hover::before { + box-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1); +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input { + -webkit-appearance: none; + display: inline-block; + position: relative; + width: var(--ck-todo-list-checkmark-size); + height: var(--ck-todo-list-checkmark-size); + vertical-align: middle; + border: 0; + left: -25px; + margin-right: -15px; + right: 0; + margin-left: 0; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content[dir=rtl] .todo-list .todo-list__label > span[contenteditable=false] > input { + left: 0; + margin-right: 0; + right: -25px; + margin-left: -15px; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input::before { + display: block; + position: absolute; + box-sizing: border-box; + content: ''; + width: 100%; + height: 100%; + border: 1px solid hsl(0, 0%, 20%); + border-radius: 2px; + transition: 250ms ease-in-out box-shadow; +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input::after { + display: block; + position: absolute; + box-sizing: content-box; + pointer-events: none; + content: ''; + left: calc( var(--ck-todo-list-checkmark-size) / 3 ); + top: calc( var(--ck-todo-list-checkmark-size) / 5.3 ); + width: calc( var(--ck-todo-list-checkmark-size) / 5.3 ); + height: calc( var(--ck-todo-list-checkmark-size) / 2.6 ); + border-style: solid; + border-color: transparent; + border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0; + transform: rotate(45deg); +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input[checked]::before { + background: hsl(126, 64%, 41%); + border-color: hsl(126, 64%, 41%); +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input[checked]::after { + border-color: hsl(0, 0%, 100%); +} +/* @ckeditor/ckeditor5-list/theme/todolist.css */ +.ck-editor__editable.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox] { + position: absolute; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ol { + list-style-type: decimal; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ol ol { + list-style-type: lower-latin; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ol ol ol { + list-style-type: lower-roman; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ol ol ol ol { + list-style-type: upper-latin; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ol ol ol ol ol { + list-style-type: upper-roman; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ul { + list-style-type: disc; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ul ul { + list-style-type: circle; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ul ul ul { + list-style-type: square; +} +/* @ckeditor/ckeditor5-list/theme/list.css */ +.ck-content ul ul ul ul { + list-style-type: square; +} +/* @ckeditor/ckeditor5-image/theme/image.css */ +.ck-content .image { + display: table; + clear: both; + text-align: center; + margin: 0.9em auto; + min-width: 50px; +} +/* @ckeditor/ckeditor5-image/theme/image.css */ +.ck-content .image img { + display: block; + margin: 0 auto; + max-width: 100%; + min-width: 100%; + height: auto; +} +/* @ckeditor/ckeditor5-image/theme/image.css */ +.ck-content .image-inline { + /* + * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).; + * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root. + * This strange behavior does not happen with inline-flex. + */ + display: inline-flex; + max-width: 100%; + align-items: flex-start; +} +/* @ckeditor/ckeditor5-image/theme/image.css */ +.ck-content .image-inline picture { + display: flex; +} +/* @ckeditor/ckeditor5-image/theme/image.css */ +.ck-content .image-inline picture, +.ck-content .image-inline img { + flex-grow: 1; + flex-shrink: 1; + max-width: 100%; +} +/* @ckeditor/ckeditor5-image/theme/imageresize.css */ +.ck-content img.image_resized { + height: auto; +} +/* @ckeditor/ckeditor5-image/theme/imageresize.css */ +.ck-content .image.image_resized { + max-width: 100%; + display: block; + box-sizing: border-box; +} +/* @ckeditor/ckeditor5-image/theme/imageresize.css */ +.ck-content .image.image_resized img { + width: 100%; +} +/* @ckeditor/ckeditor5-image/theme/imageresize.css */ +.ck-content .image.image_resized > figcaption { + display: block; +} +/* @ckeditor/ckeditor5-image/theme/imagecaption.css */ +.ck-content .image > figcaption { + display: table-caption; + caption-side: bottom; + word-break: break-word; + color: var(--ck-color-image-caption-text); + background-color: var(--ck-color-image-caption-background); + padding: .6em; + font-size: .75em; + outline-offset: -1px; +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-block-align-left, +.ck-content .image-style-block-align-right { + max-width: calc(100% - var(--ck-image-style-spacing)); +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-align-left, +.ck-content .image-style-align-right { + clear: none; +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-side { + float: right; + margin-left: var(--ck-image-style-spacing); + max-width: 50%; +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-align-left { + float: left; + margin-right: var(--ck-image-style-spacing); +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-align-center { + margin-left: auto; + margin-right: auto; +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-align-right { + float: right; + margin-left: var(--ck-image-style-spacing); +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-block-align-right { + margin-right: 0; + margin-left: auto; +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-style-block-align-left { + margin-left: 0; + margin-right: auto; +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content p + .image-style-align-left, +.ck-content p + .image-style-align-right, +.ck-content p + .image-style-side { + margin-top: 0; +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-inline.image-style-align-left, +.ck-content .image-inline.image-style-align-right { + margin-top: var(--ck-inline-image-style-spacing); + margin-bottom: var(--ck-inline-image-style-spacing); +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-inline.image-style-align-left { + margin-right: var(--ck-inline-image-style-spacing); +} +/* @ckeditor/ckeditor5-image/theme/imagestyle.css */ +.ck-content .image-inline.image-style-align-right { + margin-left: var(--ck-inline-image-style-spacing); +} +/* @ckeditor/ckeditor5-highlight/theme/highlight.css */ +.ck-content .marker-yellow { + background-color: var(--ck-highlight-marker-yellow); +} +/* @ckeditor/ckeditor5-highlight/theme/highlight.css */ +.ck-content .marker-green { + background-color: var(--ck-highlight-marker-green); +} +/* @ckeditor/ckeditor5-highlight/theme/highlight.css */ +.ck-content .marker-pink { + background-color: var(--ck-highlight-marker-pink); +} +/* @ckeditor/ckeditor5-highlight/theme/highlight.css */ +.ck-content .marker-blue { + background-color: var(--ck-highlight-marker-blue); +} +/* @ckeditor/ckeditor5-highlight/theme/highlight.css */ +.ck-content .pen-red { + color: var(--ck-highlight-pen-red); + background-color: transparent; +} +/* @ckeditor/ckeditor5-highlight/theme/highlight.css */ +.ck-content .pen-green { + color: var(--ck-highlight-pen-green); + background-color: transparent; +} +/* @ckeditor/ckeditor5-block-quote/theme/blockquote.css */ +.ck-content blockquote { + overflow: hidden; + padding-right: 1.5em; + padding-left: 1.5em; + margin-left: 0; + margin-right: 0; + font-style: italic; + border-left: solid 5px hsl(0, 0%, 80%); +} +/* @ckeditor/ckeditor5-block-quote/theme/blockquote.css */ +.ck-content[dir="rtl"] blockquote { + border-left: 0; + border-right: solid 5px hsl(0, 0%, 80%); +} +/* @ckeditor/ckeditor5-basic-styles/theme/code.css */ +.ck-content code { + background-color: hsla(0, 0%, 78%, 0.3); + padding: .15em; + border-radius: 2px; +} +/* @ckeditor/ckeditor5-font/theme/fontsize.css */ +.ck-content .text-tiny { + font-size: .7em; +} +/* @ckeditor/ckeditor5-font/theme/fontsize.css */ +.ck-content .text-small { + font-size: .85em; +} +/* @ckeditor/ckeditor5-font/theme/fontsize.css */ +.ck-content .text-big { + font-size: 1.4em; +} +/* @ckeditor/ckeditor5-font/theme/fontsize.css */ +.ck-content .text-huge { + font-size: 1.8em; +} +/* @ckeditor/ckeditor5-mention/theme/mention.css */ +.ck-content .mention { + background: var(--ck-color-mention-background); + color: var(--ck-color-mention-text); +} +/* @ckeditor/ckeditor5-horizontal-line/theme/horizontalline.css */ +.ck-content hr { + margin: 15px 0; + height: 4px; + background: hsl(0, 0%, 87%); + border: 0; +} +/* @ckeditor/ckeditor5-code-block/theme/codeblock.css */ +.ck-content pre { + padding: 1em; + text-align: left; + direction: ltr; + tab-size: 4; + white-space: pre-wrap; + font-style: normal; + min-width: 200px; + border: 0px; + border-radius: 6px; + box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.2); +} +.ck-content pre:not(.hljs) { + color: hsl(0, 0%, 20.8%); + background: hsla(0, 0%, 78%, 0.3); +} +/* @ckeditor/ckeditor5-code-block/theme/codeblock.css */ +.ck-content pre code { + background: unset; + padding: 0; + border-radius: 0; +} +@media print { + /* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */ + .ck-content .page-break { + padding: 0; + } + /* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */ + .ck-content .page-break::after { + display: none; + } +}