From 3c6d1aa50f925bd6e2c777cd047ae338d595d8a1 Mon Sep 17 00:00:00 2001
From: root-hal9000 <2352828+root-hal9000@users.noreply.github.com>
Date: Sat, 6 Jul 2024 12:42:04 -0500
Subject: [PATCH] TOC and file renaming
- renamed all files to be lowercase and have no spaces
- Updated all references to those names in file content
- Recreated table of contents into readme.MD Issue #2
- Separated "importing docs" text into a separate file
- Added a few %%{WARNING}%% tags to links that go to zadams repos. Issue #87
---
README.md | 92 +-
Wiki/advanced-showcases.md | 9 +
Wiki/anonymized-database.md | 20 +
Wiki/apache-proxy-setup.md | 88 +
Wiki/archived-notes.md | 10 +
Wiki/attachments.md | 8 +
Wiki/attribute-inheritance.md | 21 +
Wiki/attributes.md | 114 +
Wiki/backup.md | 43 +
Wiki/book-note.md | 10 +
Wiki/bookmarks.md | 13 +
Wiki/canvas-note.md | 6 +
Wiki/cloning-notes.md | 70 +
Wiki/code-notes.md | 23 +
Wiki/custom-request-handler.md | 93 +
Wiki/custom-widget.md | 97 +
Wiki/data-directory.md | 89 +
Wiki/day-notes.md | 62 +
Wiki/default-note-title.md | 31 +
Wiki/desktop-installation.md | 17 +
Wiki/docker-server-installation.md | 93 +
Wiki/document.md | 46 +
Wiki/error-logs.md | 42 +
Wiki/etapi.md | 29 +
Wiki/events.md | 31 +
Wiki/evernote-import.md | 21 +
Wiki/faq.md | 65 +
Wiki/frontend-basics.md | 60 +
Wiki/home.md | 46 +
Wiki/images.md | 24 +
Wiki/images/1-theme-gallery-image.png | Bin 0 -> 269837 bytes
Wiki/images/1-workspace-image.png | Bin 0 -> 15776 bytes
Wiki/images/2-theme-gallery-image.png | Bin 0 -> 2433353 bytes
Wiki/images/canvas-note-image.png | Bin 0 -> 545853 bytes
Wiki/images/custom-widget-image.png | Bin 0 -> 151418 bytes
Wiki/images/day-notes-image.png | Bin 0 -> 104717 bytes
Wiki/images/home-button.svg | 18 +
Wiki/images/saved-search-image.gif | Bin 0 -> 1208121 bytes
Wiki/images/text-notes-image.png | Bin 0 -> 46299 bytes
Wiki/images/theme-gallery-bear-dark.png | Bin 0 -> 107600 bytes
Wiki/images/theme-gallery-bear-white.png | Bin 0 -> 106875 bytes
Wiki/images/theme-gallery-image.jpg | Bin 0 -> 103983 bytes
Wiki/images/theme-gallery-image.png | Bin 0 -> 153304 bytes
Wiki/images/theme-gallery-midnight.png | Bin 0 -> 130786 bytes
.../theme-gallery-neon-dark-demo-v.jpeg | Bin 0 -> 125791 bytes
Wiki/images/theme-gallery-preview.jpg | Bin 0 -> 115704 bytes
Wiki/images/theme-gallery-screenshot.png | Bin 0 -> 195800 bytes
Wiki/images/theme-gallery-screenshot1.png | 2204 +++++++++++++++++
Wiki/images/theme-gallery-screenshot2.png | 1720 +++++++++++++
Wiki/images/theme-gallery-scrn4-01.png | Bin 0 -> 198722 bytes
.../images/theme-gallery-trilium-theme-co.png | Bin 0 -> 205085 bytes
.../images/web-clipper-chrome-trilium-web.png | Bin 0 -> 18240 bytes
Wiki/images/workspace-image.png | Bin 0 -> 29201 bytes
Wiki/import-docs.md | 17 +
Wiki/keyboard-shortcuts.md | 83 +
Wiki/kubernetes-server-installation.md | 31 +
Wiki/link-map.md | 2 +
Wiki/links.md | 36 +
Wiki/manual-server-installation.md | 67 +
Wiki/markdown.md | 43 +
Wiki/mobile-frontend.md | 38 +
Wiki/nginx-proxy-setup.md | 52 +
Wiki/nixos-server-installation.md | 27 +
Wiki/note-hoisting.md | 8 +
Wiki/note-map.md | 28 +
Wiki/note-navigation.md | 28 +
Wiki/note-revisions.md | 10 +
Wiki/note.md | 44 +
Wiki/onenote.md | 57 +
Wiki/packaged-server-installation.md | 83 +
Wiki/patterns-of-personal-knowledge.md | 158 ++
Wiki/privacy-policy.md | 17 +
Wiki/promoted-attributes.md | 33 +
Wiki/protected-notes.md | 57 +
Wiki/quick-start.md | 26 +
Wiki/read-only-note.md | 14 +
Wiki/relation-map.md | 53 +
Wiki/release-notes-v0.48.md | 128 +
Wiki/saved-search.md | 9 +
Wiki/screenshot-tour.md | 46 +
Wiki/script-api.md | 10 +
Wiki/scripts.md | 58 +
Wiki/search.md | 192 ++
Wiki/server-installation.md | 66 +
Wiki/sharing.md | 125 +
Wiki/sorting.md | 25 +
Wiki/synchronization.md | 85 +
Wiki/task-manager.md | 65 +
Wiki/template.md | 42 +
Wiki/text-notes.md | 107 +
Wiki/theme-gallery.md | 19 +
Wiki/themes.md | 113 +
Wiki/tls-configuration.md | 42 +
Wiki/tree-concepts.md | 28 +
Wiki/tree-manipulation.md | 26 +
Wiki/troubleshooting.md | 90 +
Wiki/upgrading-trilium.md | 22 +
Wiki/web-clipper.md | 42 +
Wiki/weight-tracker.md | 73 +
Wiki/widget-basics.md | 105 +
Wiki/workspace.md | 23 +
101 files changed, 7850 insertions(+), 18 deletions(-)
create mode 100644 Wiki/advanced-showcases.md
create mode 100644 Wiki/anonymized-database.md
create mode 100644 Wiki/apache-proxy-setup.md
create mode 100644 Wiki/archived-notes.md
create mode 100644 Wiki/attachments.md
create mode 100644 Wiki/attribute-inheritance.md
create mode 100644 Wiki/attributes.md
create mode 100644 Wiki/backup.md
create mode 100644 Wiki/book-note.md
create mode 100644 Wiki/bookmarks.md
create mode 100644 Wiki/canvas-note.md
create mode 100644 Wiki/cloning-notes.md
create mode 100644 Wiki/code-notes.md
create mode 100644 Wiki/custom-request-handler.md
create mode 100644 Wiki/custom-widget.md
create mode 100644 Wiki/data-directory.md
create mode 100644 Wiki/day-notes.md
create mode 100644 Wiki/default-note-title.md
create mode 100644 Wiki/desktop-installation.md
create mode 100644 Wiki/docker-server-installation.md
create mode 100644 Wiki/document.md
create mode 100644 Wiki/error-logs.md
create mode 100644 Wiki/etapi.md
create mode 100644 Wiki/events.md
create mode 100644 Wiki/evernote-import.md
create mode 100644 Wiki/faq.md
create mode 100644 Wiki/frontend-basics.md
create mode 100644 Wiki/home.md
create mode 100644 Wiki/images.md
create mode 100644 Wiki/images/1-theme-gallery-image.png
create mode 100644 Wiki/images/1-workspace-image.png
create mode 100644 Wiki/images/2-theme-gallery-image.png
create mode 100644 Wiki/images/canvas-note-image.png
create mode 100644 Wiki/images/custom-widget-image.png
create mode 100644 Wiki/images/day-notes-image.png
create mode 100644 Wiki/images/home-button.svg
create mode 100644 Wiki/images/saved-search-image.gif
create mode 100644 Wiki/images/text-notes-image.png
create mode 100644 Wiki/images/theme-gallery-bear-dark.png
create mode 100644 Wiki/images/theme-gallery-bear-white.png
create mode 100644 Wiki/images/theme-gallery-image.jpg
create mode 100644 Wiki/images/theme-gallery-image.png
create mode 100644 Wiki/images/theme-gallery-midnight.png
create mode 100644 Wiki/images/theme-gallery-neon-dark-demo-v.jpeg
create mode 100644 Wiki/images/theme-gallery-preview.jpg
create mode 100644 Wiki/images/theme-gallery-screenshot.png
create mode 100644 Wiki/images/theme-gallery-screenshot1.png
create mode 100644 Wiki/images/theme-gallery-screenshot2.png
create mode 100644 Wiki/images/theme-gallery-scrn4-01.png
create mode 100644 Wiki/images/theme-gallery-trilium-theme-co.png
create mode 100644 Wiki/images/web-clipper-chrome-trilium-web.png
create mode 100644 Wiki/images/workspace-image.png
create mode 100644 Wiki/import-docs.md
create mode 100644 Wiki/keyboard-shortcuts.md
create mode 100644 Wiki/kubernetes-server-installation.md
create mode 100644 Wiki/link-map.md
create mode 100644 Wiki/links.md
create mode 100644 Wiki/manual-server-installation.md
create mode 100644 Wiki/markdown.md
create mode 100644 Wiki/mobile-frontend.md
create mode 100644 Wiki/nginx-proxy-setup.md
create mode 100644 Wiki/nixos-server-installation.md
create mode 100644 Wiki/note-hoisting.md
create mode 100644 Wiki/note-map.md
create mode 100644 Wiki/note-navigation.md
create mode 100644 Wiki/note-revisions.md
create mode 100644 Wiki/note.md
create mode 100644 Wiki/onenote.md
create mode 100644 Wiki/packaged-server-installation.md
create mode 100644 Wiki/patterns-of-personal-knowledge.md
create mode 100644 Wiki/privacy-policy.md
create mode 100644 Wiki/promoted-attributes.md
create mode 100644 Wiki/protected-notes.md
create mode 100644 Wiki/quick-start.md
create mode 100644 Wiki/read-only-note.md
create mode 100644 Wiki/relation-map.md
create mode 100644 Wiki/release-notes-v0.48.md
create mode 100644 Wiki/saved-search.md
create mode 100644 Wiki/screenshot-tour.md
create mode 100644 Wiki/script-api.md
create mode 100644 Wiki/scripts.md
create mode 100644 Wiki/search.md
create mode 100644 Wiki/server-installation.md
create mode 100644 Wiki/sharing.md
create mode 100644 Wiki/sorting.md
create mode 100644 Wiki/synchronization.md
create mode 100644 Wiki/task-manager.md
create mode 100644 Wiki/template.md
create mode 100644 Wiki/text-notes.md
create mode 100644 Wiki/theme-gallery.md
create mode 100644 Wiki/themes.md
create mode 100644 Wiki/tls-configuration.md
create mode 100644 Wiki/tree-concepts.md
create mode 100644 Wiki/tree-manipulation.md
create mode 100644 Wiki/troubleshooting.md
create mode 100644 Wiki/upgrading-trilium.md
create mode 100644 Wiki/web-clipper.md
create mode 100644 Wiki/weight-tracker.md
create mode 100644 Wiki/widget-basics.md
create mode 100644 Wiki/workspace.md
diff --git a/README.md b/README.md
index 0690cc2..818f111 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,77 @@
-# Trilium Next documentation
+# TriliumNext Documentation
-This is an export of the upsteam [Zadam Wiki][0] for Trilium Notes. It's been converted from Github wiki format to markdown with some light rearranging to make for better presentation when imported into Trilium. It's anticipdated that in time this will supercede Zadam Wiki.
+To import this documentation into your own instance of Trilium, [follow these instructions](Wiki/import-docs.md)
-## Importing
+## Table of Contents
-To import these docs into your own Trilium instance:
-
-1. Download archive from main branch of this repo:
-https://github.com/TriliumNext/Docs/archive/refs/heads/main.zip
-2. In Trilim create a new note to act as branch for the docs
-3. Right-click >> Import into note >> select downloaded `Docs-main.zip`
- a. optionally uncheck "Shrink images"
-
-### Optional cleanup
-- delete `!!!meta.json`
-- Move `images` node down to the bottom (instead of dragging, it's easier to move out to parent node than back into Wiki. It will go to end of list automatically).
-
-For new releases delete the old docs note tree and start fresh, or you'll get duplicates.
-
-[0]: https://github.com/zadam/trilium/wiki
+- [Quick Start](Wiki/quick-start.md)
+- [Screenshot Tour](Wiki/screenshot-tour.md)
+- Basic Concepts
+ - [Documents](Wiki/document.md)
+ - [Note](Wiki/note.md)
+ - [Text Notes](Wiki/text-notes.md)
+ - [Links](Wiki/links.md)
+ - [Images](Wiki/images.md)
+ - [Attachments](Wiki/attachments.md)
+ - [Cloning notes](Wiki/cloning-notes.md)
+ - [Protected Notes](Wiki/protected-notes.md)
+ - [Archived Notes](Wiki/archived-notes.md)
+ - [Note Revisions](Wiki/note-revisions.md)
+ - Navigation
+ - [Tree Concepts](Wiki/tree-concepts.md)
+ - [Tree Manipulation](Wiki/tree-manipulation.md)
+ - [Note Navigation](Wiki/note-navigation.md)
+ - [Search](Wiki/search.md)
+ - [Bookmarks](Wiki/bookmarks.md)
+ - [Note Hoisting](Wiki/note-hoisting.md)
+ - [Workspace](Wiki/workspace.md)
+ - [Keyboard Shortcuts](Wiki/keyboard-shortcuts.md)
+ - [Themes](Wiki/themes.md)
+ - [Theme Gallery](Wiki)
+ - Import & Export
+ - [Markdown](Wiki/markdown.md)
+ - [Evernote](Wiki/evernote-import.md)
+ - [OneNote](Wiki/onenote.md)
+- Installation & Setup
+ - [Desktop Installation](Wiki/desktop-installation.md)
+ - [Server Installation](Wiki/server-installation.md)
+ - [Packaged Server Installation](Wiki/packaged-server-installation.md)
+ - [Docker Server Installation](Wiki/docker-server-installation.md)
+ - [NixOS Server Installation](Wiki/nixos-server-installation.md)
+ - [Manual Server Installation](Wiki/manual-server-installation.md)
+ - [Kubernettes Server Installation](Wiki/kubernetes-server-installation.md)
+ - [Apache Proxy Setup](Wiki/apache-proxy-setup.md)
+ - [Nginx Proxy Setup](Wiki/nginx-proxy-setup.md)
+ - [TLS Configuration](Wiki/tls-configuration.md)
+ - [Synchronization](Wiki/synchronization.md)
+ - [Mobile Frontend](Wiki/mobile-frontend.md)
+ - [Web Clipper](Wiki/web-clipper.md)
+ - [Upgrading Trilium](Wiki/upgrading-trilium.md)
+ - [Backup](Wiki/backup.md)
+ - [Data Directory](Wiki/data-directory.md)
+- Advanced Usage
+ - [Attributes](Wiki/attributes.md)
+ - [Attribute Inheritance](Wiki/attribute-inheritance.md)
+ - [Promoted Attributes](Wiki/promoted-attributes.md)
+ - [Template](Wiki/template.md)
+ - [Relation Map](Wiki/relation-map.md)
+ - [Note Map](Wiki/note-map.md)
+ - [Book Note](Wiki/book-note.md)
+ - [Sharing](Wiki/sharing.md)
+ - [Code Notes](Wiki/code-notes.md)
+ - [Scripts](Wiki/scripts.md)
+ - [Script API](Wiki/script-api.md)
+ - [Custom Request handler](Wiki/custom-request-handler.md)
+ - [Events](Wiki/events.md)
+ - [Custom Widgets](Wiki/custom-widget.md)
+ - [Advanced Showcase](Wiki/advanced-showcases.md)
+ - [Day Notes](Wiki/day-notes.md)
+ - [Weight Tracker](Wiki/weight-tracker.md)
+ - [Task Manager](Wiki/task-manager.md)
+ - [ETAPI (Rest API)](Wiki/etapi.md)
+ - [Default Note Title](Wiki/default-note-title.md)
+- Developer Guides
+ - [Frontend Basics](Wiki/frontend-basics.md)
+ - [Widget Basics](Wiki/widget-basics.md)
+- [FAQ](Wiki/faq.md)
+- [Troubleshooting](Wiki/troubleshooting.md)
diff --git a/Wiki/advanced-showcases.md b/Wiki/advanced-showcases.md
new file mode 100644
index 0000000..253a236
--- /dev/null
+++ b/Wiki/advanced-showcases.md
@@ -0,0 +1,9 @@
+# Advanced showcases
+Trilium provides some advanced functionality in the form of [Scripts](scripts.md) and [promoted attributes](promoted-attributes.md). To explain and visualize these features we've prepared few showcases which are also available in the [demo document](document.md):
+
+* [Relation map](relation-map.md)
+* [Day notes](day-notes.md)
+* [Weight Tracker](weight-tracker.md)
+* [Task Manager](task-manager.md)
+
+An important thing to keep in mind is that above showcases and demoed functionality are not built-in into Trilium - these are just examples of Trilium's extensibility.
diff --git a/Wiki/anonymized-database.md b/Wiki/anonymized-database.md
new file mode 100644
index 0000000..54f79d5
--- /dev/null
+++ b/Wiki/anonymized-database.md
@@ -0,0 +1,20 @@
+# Anonymized database
+### Anonymized database
+
+In some cases, it's necessary to see the database structure to be able to debug the problem. Of course, we can't ask you to send us [Document](document.md) file with your notes.
+
+For this, Trilium supports anonymization of the database - you can trigger this in Options -> Advanced tab.
+
+![](images/anonymization.png)
+
+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](https://sqlite.org/lang_vacuum.html) 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](data-directory.md)). You can safely attach it with your bug report or send it to [zadam.apps@gmail.com](#root/N3Zt66yETj9g) %%{WARNING}%%
+
+#### Command line anonymization
+
+If the database is corrupted in a way which prevents Trilium to start up, you won't be able to trigger the anonymization from the UI. For such a case, anonymization is also available from command line:
+
+```text-plain
+node src/anonymize.js
+```
+
+This needs to be executed in the directory with Trilium source files, for desktop builds this in `resources/app` directory.
diff --git a/Wiki/apache-proxy-setup.md b/Wiki/apache-proxy-setup.md
new file mode 100644
index 0000000..cffff2d
--- /dev/null
+++ b/Wiki/apache-proxy-setup.md
@@ -0,0 +1,88 @@
+# Apache proxy setup
+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
+
+ ```text-plain
+ docker pull zadam/trilium:[VERSION] %%{WARNING}%%
+ docker create --name trilium -t -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data zadam/trilium:[VERSION]
+ ```
+
+2. Configure Apache proxy and websocket proxy
+
+ 1. Enable apache proxy modules
+
+ ```text-plain
+ a2enmod ssl
+ a2enmod proxy
+ a2enmod proxy_http
+ a2enmod proxy_wstunnel
+ ```
+
+ 2. Create a new let's encrypt certificate
+
+ ```text-plain
+ sudo certbot certonly -d trilium.mydomain.com
+ ```
+
+ Choose standalone (2) and note the location of the created certificates (typically /etc/letsencrypt/live/...)
+
+ 3. 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)
+
+ ```text-plain
+ sudo nano /etc/apache2/sites-available/trilium.yourdomain.com.conf
+ ```
+
+ Paste (and customize) the following text into the configuration file
+
+ ```text-plain
+
+ 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
+
+ ```
+
+ 4. Enable the virtual host with `sudo a2ensite trilium.yourdomain.com.conf`
+
+ 5. Reload apache2 with `sudo systemctl reload apache2`
+
+3. 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
+
+ ```text-plain
+ [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. Install, enable and start service
+
+ ```text-plain
+ sudo systemctl daemon-reload
+ sudo systemctl enable trilium.service
+ sudo systemctl start trilium.service
+ ```
diff --git a/Wiki/archived-notes.md b/Wiki/archived-notes.md
new file mode 100644
index 0000000..55eb5c5
--- /dev/null
+++ b/Wiki/archived-notes.md
@@ -0,0 +1,10 @@
+# Archived-notes
+Archived notes are notes which have `archived` [attribute](attributes.md) - either directly or [inherited](attribute-inheritance.md).
+
+Such notes are then by default not shown in the autocomplete and in the full text [search](search.md).
+
+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:
+
+![](images/hide-archived.png)
diff --git a/Wiki/attachments.md b/Wiki/attachments.md
new file mode 100644
index 0000000..86440f6
--- /dev/null
+++ b/Wiki/attachments.md
@@ -0,0 +1,8 @@
+# Attachments
+A note can _own_ one or more attachments. The attachment is either an image or file which can be displayed/linked in the note which owns it.
+
+The note is the exclusive owner of its attachments - they can't be linked from other notes. If a user copies the attachment link from one note to another, the attachment itself is copied and from then on lives an independent life.
+
+Attachments is a feature available in Trilium since v0.61. Attachment is now a preferred way to include images into notes. Previously, an image had to be an independent note which could be then displayed in multiple notes, but this approach proved to be complicated. Image as notes still remains as an option, and is a more suitable choice in some cases (e.g. when the particular image is sort of standalone). It is possible to convert an image to an attachment and vice versa.
+
+Image attachments are expected to be linked in the owning text note. If it's not linked, it will get deleted in a configurable timeout.
diff --git a/Wiki/attribute-inheritance.md b/Wiki/attribute-inheritance.md
new file mode 100644
index 0000000..05f25a5
--- /dev/null
+++ b/Wiki/attribute-inheritance.md
@@ -0,0 +1,21 @@
+# Attribute inheritance
+Standard inheritance
+--------------------
+
+Every [attribute](attributes.md) has flag called `isInheritable`. If this is true, then this attribute (key-value) is also applied to all its children notes, children's children notes etc.
+
+Example how this might be useful is `archived` label which hides its note from Jump to / Add link dialogs. Often times you want to archive some specific subtree, you can do this by making the `archived` label inheritable.
+
+Copying inheritance
+-------------------
+
+A different kind of inheritance is achieved using `child:` attribute name prefix. We can define that when a note is created under a certain parent note then the new child note will automatically receive defined attributes. The difference from standard inheritance is that these are real new attributes which are completely independent of the parent and will be therefore kept even if the note is moved elsewhere in the note tree.
+
+For defining the copy-attributes we use `child:` prefix in attribute name, the rest is defined normally. So as an example, when we create a child note in a note with `#child:exampleAttribute` label, then the child note will have `#exampleAttribute` label. This can be even chained, e.g. `#child:child:exampleAttribute`, in this case `#child:exampleAttribute` will be created in the child and `#exampleAttribute` will be created in the child of the child.
+
+Which kind of attribute inheritance (or if any at all) should be used depends on the specific use case.
+
+Template inheritance
+--------------------
+
+[Attribute template](template.md) could be also seen as a form of inheritance.
diff --git a/Wiki/attributes.md b/Wiki/attributes.md
new file mode 100644
index 0000000..7e7b3cb
--- /dev/null
+++ b/Wiki/attributes.md
@@ -0,0 +1,114 @@
+# Attributes
+Note attributes are key-value records owned by (assigned to) given note.
+
+There are 2 types of attributes:
+
+* Labels - simple key-value text record
+* Relation - specifies named relation (link) to another note
+
+Sometimes we're talking about labels and relations - keep in mind that both of them are types of attributes.
+
+![](images/attributes.png)
+
+Labels
+------
+
+Labels can be used for several things:
+
+* as labels with optional value - e.g. when cataloguing books, you might add labels like #year=1999, #genre="sci-fi", #author="Neal Stephenson"
+* attributes can be used to configure some advanced features / settings - see below
+* plugins / scripts can use these to mark notes with some special values / metadata (e.g. [Weight Tracker](weight-tracker.md) will have "weight" attribute on [day notes](day-notes.md) based on whose it can create chart).
+
+Labels can be used for [searching](search.md).
+
+### Standard labels
+
+The following labels are used for advanced configuration:
+
+* `disableVersioning` - disables auto-versioning. Useful for e.g. large, but unimportant notes - e.g. large JS libraries used for scripting
+* `calendarRoot` - marks note which should be used as root for [day notes](day-notes.md). Only one should be marked as such.
+* `archived` - notes with this label won't be visible by default in search results (also in Jump To, Add Link dialogs etc).
+* `excludeFromExport` - notes (with their sub-tree) won't be included in any note export.
+* `run` - defines on which events script should run. Possible values are:
+ * `frontendStartup` - when Trilium frontend starts up (or is refreshed).
+ * `backendStartup` - when Trilium backend starts up.
+ * `hourly` - run once an hour. You can use additional label `runAtHour` to specify at which hour.
+ * `daily` - run once a day.
+* `runAtHour` - On which hour should this run. Should be used together with `#run=hourly`. Can be defined multiple times for more runs during the day.
+* `runOnInstance` - define which trilium instance this should run on. Defaults to all instances.
+* `disableInclusion` - scripts with this label won't be included into parent script execution.
+* `sorted` - keeps child notes sorted (by title, alphabetically. See [Sorting](sorting.md)).
+* `top` - keeps this note at the top of the list within its parent (applies only on parents with `sorted` attribute).
+* `hidePromotedAttributes` - hide promoted attributes on this note.
+* `readOnly` - editor is in read only mode. Works only for text and code notes. See some use cases [here](https://github.com/TriliumNext/Notes/issues/371).
+* `autoReadOnlyDisabled` - text/code notes can be set automatically into read mode when they are too large. You can disable this behavior on per-note basis by adding this label to the note
+* `appCss` - marks CSS notes which are loaded into the Trilium application and can thus be used to modify Trilium's looks.
+* `appTheme` - marks CSS notes which are full Trilium themes and are thus available in Trilium options.
+* `cssClass` - the value of this label is then added as CSS class to the node representing the given note in the tree. This can be useful for advanced [themes](themes.md). Can be used in `template` notes.
+* `iconClass` - the value of this label is added as a CSS class to the icon on the tree, which can help visually distinguish the notes in the tree. An example might be `bx bx-home` - icons are taken from [boxicons](https://boxicons.com/). Can be used in [template](template.md) notes.
+* `pageSize`\- number of items per page in note listing.
+* `customRequestHandler` and `customResourceProvider` - see [Custom request handler](custom-request-handler.md)
+* `widget` - marks this note as a custom widget, which will be added to the Trilium component tree. See [Custom widget](custom-widget.md).
+* `workspace`, `workspaceIconClass`, `workspaceTabBackgroundColor`, `workspaceCalendarRoot` - see [Workspace](workspace.md)
+* `searchHome` - new search notes will be created as children of this note (otherwise they are created in [Day notes](day-notes.md))
+* `hoistedSearchHome` - new search notes will be created as children of this note when hoisted to some ancestor of this note
+* `inbox` - default inbox location for new notes - when you create a note using "new note" button in the sidebar, notes will be created as child notes in the note marked as with `#inbox` label.
+* `hoistedInbox` - default inbox location for new notes when hoisted to some ancestor of this note
+* `sqlConsoleHome` - default location of SQL console notes
+* `bookmarked` and `bookmarkFolder` - see [Bookmarks](bookmarks.md)
+* `shareXXX` labels - see [Sharing](sharing.md)
+* `keyboardShortcut` - can be defined as e.g. "Ctrl+I". Pressing this keyboard combination will then bring you to the note on which it is defined. Note that Trilium must be reloaded/restarted (Ctrl+R) for changes to be in effect.
+* `displayRelations` and `hideRelations` - comma delimited names of relations which should be displayed/hidden. All other relations will be hidden/visible.
+* `hideRelations` - comma delimited names of relations which should be hidden.
+* `titleTemplate` - see [Default note title](default-note-title.md).
+* `template` - this note will appear in the selection of available templates when creating new notes.
+* `toc` - `#toc` or `#toc=show` will force the table of contents to be shown, `#toc=hide` will force hiding it.
+* `color` - defines the color of the note in links, tree etc. Use any valid CSS value like `red` or `#f0a349`
+* `hideChildrenOverview` - Hides child notes from being displayed in the editor of the parent note
+* `viewType` - Allows setting the view of the child notes inside the editor to a grid or list. Possible values:
+ * `grid` - displays child notes in a grid
+ * `list` - displays child notes in a list
+
+Relations
+---------
+
+Relation is a kind of link between two notes.
+
+This could be used when you e.g. keep a book database, you can use relations to keep formal links between the book (note) and the book's author (note) by defining an "author" relation on the book note pointing to the author's note.
+
+Relations are used also for some advanced scripting - like attaching scripts to events happening on certain note.
+
+### Standard relations
+
+[Events](events.md):
+
+* `runOnNoteCreation` - executes when note is created on backend. Use this relation if you want to run the script for all notes created under a specific subtree. In that case, create it on the subtree root note and make it inheritable. A new note created within the subtree (any depth) will trigger the script.
+* `runOnChildNoteCreation` - executes when new note is created under the note where this relation is defined
+* `runOnNoteTitleChange` - executes when note title is changed (includes note creation as well)
+* `runOnNoteChange` - executes when note is changed (includes note creation as well)
+* `runOnNoteDeletion` - executes when note is being deleted.
+* `runOnBranchCreation` and `runOnBranchDeletion` - executes when a branch is created/deleted. Branches are links between a parent and a child note, and are created when e.g. cloning or moving notes.
+* `runOnAttributeCreation` - executes when new attribute is created for the note which defines this relation
+* `runOnAttributeChange` - executes when the attribute is changed of a note which defines this relation. This is triggered also when the attribute is deleted
+
+Other relations:
+
+* `template` - attached note's attributes will be inherited even without parent-child relationship. See [template](template.md) for details.
+* `renderNote` - notes of type "render HTML note" will be rendered using a code note (HTML or script) and it is necessary to point using this relation to which note should be rendered
+* `widget` - target of this relation will be executed and rendered as a widget in the sidebar
+* `shareXXX` relations described in [Sharing](sharing.md)
+
+Multiplicity
+------------
+
+Attributes allow multiplicity - there can be multiple attributes with the same name. We're then calling such attributes "multivalued".
+
+Attribute definitions / promoted attributes
+-------------------------------------------
+
+Special kind of labels are used to create "label/attribute" definitions. See [Promoted attributes](promoted-attributes.md) for details.
+
+Attribute inheritance
+---------------------
+
+See [Attribute inheritance](attribute-inheritance.md).
diff --git a/Wiki/backup.md b/Wiki/backup.md
new file mode 100644
index 0000000..08382c7
--- /dev/null
+++ b/Wiki/backup.md
@@ -0,0 +1,43 @@
+# Backup
+Trilium supports simple backup scheme where it saves copy of the [document](document.md) on these events:
+
+* once a day
+* once a week
+* once a month
+* before DB migration to newer version
+
+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](data-directory.md).
+
+This is only very basic backup solution, and you're encouraged to add some better backup solution - e.g. backing up the [document](document.md) to cloud / different computer etc.
+
+Note that [synchronization](synchronization.md) 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:
+
+* find [data directory](data-directory.md) Trilium uses - easy way is to open "About Trilium Notes" from "Menu" in upper left corner and looking at "data directory"
+ * I'll refer to `~/trilium-data` as data directory from now on
+* find `~/trilium-data/backup/backup-weekly.db` - this is the [document](document.md) backup
+* at this point stop/kill Trilium
+* delete `~/trilium-data/document.db`, `~/trilium-data/document.db-wal` and `~/trilium-data/document.db-shm` (latter two files are auto generated)
+* copy and rename this `~/trilium-data/backup/backup-weekly.db` to `~/trilium-data/document.db`
+* make sure that the file is writable, e.g. with `chmod 600 document.db`
+* start Trilium again
+
+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](data-directory.md):
+
+```text-plain
+[General]
+... some other configs
+# set to true to disable backups (e.g. because of limited space on server)
+noBackup=true
+```
+
+See [sample config](https://github.com/TriliumNext/Notes/blob/master/config-sample.ini). %%{WARNING}%%
diff --git a/Wiki/book-note.md b/Wiki/book-note.md
new file mode 100644
index 0000000..3f37a0f
--- /dev/null
+++ b/Wiki/book-note.md
@@ -0,0 +1,10 @@
+# Book note
+Book [note](note.md) is a type of note which displays all its children's content in a linear fashion, so you can read note subtree like a book. This can be useful for reading many smaller notes. Seeing an example might explain this concept better:
+
+![](images/book-note.png)
+
+Notice in the tree on the left pane how "node.js" note has some children and these are then displayed on the right pane.
+
+You can also switch to "grid view" in the Book properties:
+
+![](images/book-note-pictures.png)
diff --git a/Wiki/bookmarks.md b/Wiki/bookmarks.md
new file mode 100644
index 0000000..99ff9e2
--- /dev/null
+++ b/Wiki/bookmarks.md
@@ -0,0 +1,13 @@
+# Bookmarks
+To easily access selected notes, you can bookmark them. See demo:
+
+![](images/bookmarks.gif)
+
+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:
+
+![](images/bookmark-folder.png)
+
+To do this, you need to add a `#bookmarkFolder` label to the note.
diff --git a/Wiki/canvas-note.md b/Wiki/canvas-note.md
new file mode 100644
index 0000000..a834f28
--- /dev/null
+++ b/Wiki/canvas-note.md
@@ -0,0 +1,6 @@
+# Canvas-note
+(Since trilium v0.52)
+
+Canvas note use the excalidraw library to allow handwritten notes with mouse, pen or touch on an infinite canvas. It also supports basic diagramming, text and garphics input.
+
+![grafik](images/Canvas-note%20image.png)
diff --git a/Wiki/cloning-notes.md b/Wiki/cloning-notes.md
new file mode 100644
index 0000000..467c94a
--- /dev/null
+++ b/Wiki/cloning-notes.md
@@ -0,0 +1,70 @@
+# 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:
+
+* Technology
+ * Programming
+ * Kotlin
+ * JavaScript
+ * Operating systems
+ * Linux
+ * Windows
+
+Now, I'm starting to learn about [Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) 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:
+
+* Technology
+ * Programming
+ * Kotlin
+ * JavaScript
+ * Bash
+ * some sub-notes ...
+ * Operating systems
+ * Linux
+ * Bash
+ * some sub-notes ...
+ * Windows
+
+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
+
+![](images/create-clone.gif)
+
+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](keyboard-shortcuts.md).
+
+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. 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
diff --git a/Wiki/code-notes.md b/Wiki/code-notes.md
new file mode 100644
index 0000000..2b289f3
--- /dev/null
+++ b/Wiki/code-notes.md
@@ -0,0 +1,23 @@
+# 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:
+
+* computer programmers can store code snippets as notes with syntax highlighting
+* JavaScript code notes can be executed inside Trilium for some extra functionality
+ * we call such JavaScript code notes "scripts" - see [Scripts](scripts.md)
+* JSON, XML etc. can be used as storage for structured data (typically used in conjunction with scripting)
+
+![](images/code-note.png)
+
+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. The disadvantage is that code blocks don't support syntax highlighting.
+
+![](images/code-block.png)
diff --git a/Wiki/custom-request-handler.md b/Wiki/custom-request-handler.md
new file mode 100644
index 0000000..2adca1a
--- /dev/null
+++ b/Wiki/custom-request-handler.md
@@ -0,0 +1,93 @@
+# Custom request handler
+Trilium provides a mechanism for [scripts](scripts.md) 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](code-notes.md) containing:
+
+```text-plain
+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:
+
+* label `#customRequestHandler` with value `create-note`
+* relation `~targetNote` pointing to a note where new notes should be saved
+
+### Explanation
+
+Let's test this by using an HTTP client to send a request:
+
+```text-plain
+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](attributes.md). 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](https://expressjs.com/en/api.html#req) and [response](https://expressjs.com/en/api.html#res) objects 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](script-api.md).
+
+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).
+
+Note: The file that is supposed to be exposed needs to have a label `#customResourceProvider="fonts/myFont.woff`
+
+For example, your file is in custom/fonts, you can call it via `custom/fonts/myFont.woff`.
+
+Advanced concepts
+-----------------
+
+`api.req` and `api.res` are Express.js objects - you can always look into its [documentation](https://expressjs.com/en/api.html) for details.
+
+### Parameters
+
+REST request paths often contain parameters in the URL, e.g.:
+
+```text-plain
+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:
+
+```text-plain
+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`:
+
+```text-plain
+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`.
diff --git a/Wiki/custom-widget.md b/Wiki/custom-widget.md
new file mode 100644
index 0000000..6a89565
--- /dev/null
+++ b/Wiki/custom-widget.md
@@ -0,0 +1,97 @@
+# Custom-widget
+It's possible to create custom widget in three possible locations where you can display your custom content.
+
+Positions are:
+
+* `left-pane`
+* `center-pane`
+* `note-detail-pane` - located within `center-pane`, but specific to note (split)
+* `right-pane`
+
+Example - word count widget
+---------------------------
+
+Create a code note of type JS frontend and **give it a** `**#widget**` **label**.
+
+```text-plain
+/*
+ * 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:
+
+![](images/Custom-widget%20image.png)
diff --git a/Wiki/data-directory.md b/Wiki/data-directory.md
new file mode 100644
index 0000000..7d396aa
--- /dev/null
+++ b/Wiki/data-directory.md
@@ -0,0 +1,89 @@
+# Data-directory
+Data directory contains:
+
+* `document.db` - [document](document.md)
+* `config.ini` - instance level settings like port on which the Trilium application runs
+* `backup` - contains automatically [backup](backup.md) of documents
+* `log` - contains application log files
+
+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):
+
+![](images/about-trilium-data-dir.png)
+
+Here's how the location is decided:
+
+Data directory is normally named `trilium-data` and it is stored in:
+
+* `/home/[user]/.local/share` for Linux
+* `C:\Users\[user]\AppData\Roaming` for Windows Vista and up
+* `/Users/[user]/Library/Application Support` for Mac OS
+* user's home is a fallback if some of the paths above don't exist
+* user's home is also a default setup for \[\[docker|Docker server installation\]\]
+
+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
+
+```text-plain
+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, u need to use `launchctl setenv TRILIUM_DATA_DIR `
+
+Here is a pre-defined template, where you just need to add your path to:
+
+```text-plain
+
+
+
+
+
+ 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 [document](document.md) instances or "portable" installation.
+
+To do this in unix based systems simply run trilium like this:
+
+```text-plain
+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 env. variables:
+
+* `TRILIUM_DOCUMENT_PATH`
+* `TRILIUM_BACKUP_DIR`
+* `TRILIUM_LOG_DIR`
+* `TRILIUM_ANONYMIZED_DB_DIR`
+* `TRILIUM_CONFIG_INI_PATH`
+
+If these are not set, default paths within the data directory will be used.
diff --git a/Wiki/day-notes.md b/Wiki/day-notes.md
new file mode 100644
index 0000000..4b5f233
--- /dev/null
+++ b/Wiki/day-notes.md
@@ -0,0 +1,62 @@
+# 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. ![image](images/Day-notes%20image.png)
+
+This pattern works well also because of \[\[cloning|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
+----
+
+![](images/day-notes.png)
+
+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](task-manager.md)).
+
+You can also notice how this day note has [promoted attribute](promoted-attributes.md) "weight" where you can track your daily weight. This data is then used in [Weight tracker](weight-tracker.md).
+
+Templates
+---------
+
+Trilium provides [template](template.md) 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):
+
+* yearTemplate
+* monthTemplate
+* dateTemplate
+
+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:
+
+* `{dayInMonthPadded} - {weekDay}` day notes are named e.g. "24 - Monday"
+* `{dayInMonthPadded}: {weekDay3}` day notes are named e.g. "24: Mon"
+* `{dayInMonthPadded}: {weekDay2}` day notes are named e.g. "24: Mo"
+* `{isoDate} - {weekDay}` day notes are named e.g. "2020-12-24 - Monday"
+* `{ordinal}` is replaced with the ordinal date (e.g. 1st, 2nd, 3rd) etc.
+
+Month pattern
+-------------
+
+It is also possible to customize the title of generated month notes through the `#monthPattern` attribute, much like `#datePattern`. The options are:
+
+* `{monthNumberPadded}` results in a number like `09` for September, and `11` for November
+* `{month}` results in the full month name (e.g. `September` or `October`)
+* `{shortMonth3}` is replaced with the first 3 letters of the month, e.g. Jan, Feb, etc.
+* `{shortMonth4}` is replaced with the first 4 letters of the month, e.g. Sept, Octo, etc.
+
+The default is `{monthNumberPadded} - {month}`
+
+Implementation
+--------------
+
+Trilium has some special support for day notes in the form of [backend Script API](https://zadam.github.io/trilium/backend_api/BackendScriptApi.html) - 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).
diff --git a/Wiki/default-note-title.md b/Wiki/default-note-title.md
new file mode 100644
index 0000000..2dbe0da
--- /dev/null
+++ b/Wiki/default-note-title.md
@@ -0,0 +1,31 @@
+# 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](attributes.md). 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:
+
+* 2022 Books
+ * Neal Stephenson: Anathem, 2008
+ * Franz Kafka: Die Verwandlung, 1915
+
+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:
+
+* Incidents
+ * 2022-05-09: System crash
+ * 2022-05-15: Backup delay
+
+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](https://day.js.org/docs/en/display/format) object.
+
+Second variable injected is [parentNote](https://zadam.github.io/trilium/backend_api/Note.html), an example could be `#titleTemplate="${parentNote.getLabelValue('authorName')}'s literary works"`.
+
+See also \[\[[template](template.md)\]\] which provides similar capabilities, including default note's content.
diff --git a/Wiki/desktop-installation.md b/Wiki/desktop-installation.md
new file mode 100644
index 0000000..e6c86c8
--- /dev/null
+++ b/Wiki/desktop-installation.md
@@ -0,0 +1,17 @@
+# Desktop-installation
+If you want to use Trilium on the desktop, download binary release for your platform from [latest release](https://github.com/TriliumNext/Notes/releases/latest), unzip the package and run `trilium` executable.
+
+Startup scripts
+---------------
+
+There are also some other options to start Trilium:
+
+* `trilium-no-cert-check` - Trilium will not validate the certificates, useful e.g. when you're syncing against a sync server with self-signed certificate
+ * Alternatively you can set `NODE_TLS_REJECT_UNAUTHORIZED=0` environment variable to the Trilium process.
+* `trilium-portable` - Trilium will try to create [data directory](data-directory.md) in the trilium's directory
+* `trilium-safe-mode` - start up in "safe mode" which disables any startup scripts which might e.g. crash the application
+
+Synchronization
+---------------
+
+If you are using a desktop instance and would like to sync with your server instance: [Synchronization](synchronization.md)
diff --git a/Wiki/docker-server-installation.md b/Wiki/docker-server-installation.md
new file mode 100644
index 0000000..de87c66
--- /dev/null
+++ b/Wiki/docker-server-installation.md
@@ -0,0 +1,93 @@
+# Docker-server-installation
+Trilium can be run as docker image. This is recommended way to deploy Trilium on servers.
+
+Official docker images are published on docker hub for **AMD64**, **ARMv6**, **ARMv7** and **ARMv8/64**: [https://hub.docker.com/r/zadam/trilium/](https://hub.docker.com/r/zadam/trilium/)%%{WARNING}%%
+
+Prerequisites
+-------------
+
+To start, you will need to have docker installed on your computer. Here are two guides that can help:
+
+* [https://docs.docker.com/engine/install/ubuntu/](https://docs.docker.com/engine/install/ubuntu/)
+* [https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04)
+
+Trilium docker container requires running as root, check if this is possible in your environment.
+
+Pull image
+----------
+
+```text-plain
+docker pull zadam/trilium:[VERSION] %%{WARNING}%%
+```
+
+Replace \[VERSION\] for actual latest version or use "series" tag - e.g. `0.52-latest`.
+
+**It's not recommended to use "latest" tag since it may upgrade your Trilium instance to a new minor version, which may potentially break your sync setup or cause other issues.**
+
+Prepare data directory on the host system
+-----------------------------------------
+
+Trilium needs a directory where it can store its data, this then needs to be mounted into the docker container. The container needs to runs as a root to be able to access it in write mode.
+
+Run image
+---------
+
+These commands mount the volume to the host system so that trilium's data (most importantly [document](document.md)) is persisted and not cleared after container stops.
+
+### Local only
+
+This will run the container so that it only available on the localhost. Use this to test the installation from a web browser on the same machine you run this command on, or if you are using a proxy with nginx/apache.
+
+```text-plain
+sudo docker run -t -i -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data zadam/trilium:[VERSION] %%{WARNING}%%
+```
+
+1. Test to see that the docker image is running with `docker ps`
+2. Access the trilium by opening a browser and go to `127.0.0.1:8080`
+
+### Local network only
+
+This command will run the container so that it is only available on your local network. This is preferable if you do not want to open ports to the rest of the internet. However, you can still access it from outside by using a VPN like WireGuard to get into your own network first. This method does assume that your local network limits outside access.
+
+First, you have to create a new network in Docker to access your local network. Here is an example, give note to "parent" and the network numbers as it may differ from your own. For more detailed information, [click here](https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/).
+
+```text-plain
+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
+```
+
+Secondly, you have to adjust the docker run command so it takes this network into account but keep using localhost to limit the accessibility of the ports to the outside world.
+
+```text-plain
+docker run --net=mynet -d -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data zadam/trilium:0.52-latest
+```
+
+Alternatively, if you wish to have the saved data and the application using a different UID & GID than 1000:1000, you can use the USER\_UID & USER\_GID environment variables:
+
+```text-plain
+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 zadam/trilium:0.52-latest %%{WARNING}%%
+```
+
+Finally, use docker inspect to find your local IP address to connect to. You can access this from all your devices connected to the local network as such: \[local:ip\]:8080.
+
+```text-plain
+docker ps
+docker inspect [container_name]
+```
+
+### Available anywhere
+
+This will run the container as a background process and will be available from any IP address
+
+```text-plain
+docker run -d -p 0.0.0.0:8080:8080 -v ~/trilium-data:/home/node/trilium-data zadam/trilium:[VERSION] %%{WARNING}%%
+```
+
+To stop this background docker process use `docker ps` to get the "CONTAINER ID" and then use `docker stop `
+
+### Different data directory location
+
+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 zadam/trilium:[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/](https://docs.docker.com/storage/volumes/)
+
+### Note about --user directive
+
+Please note, the --user directive is not supported and the container will not run without root. Instead please use the USER\_UID & USER\_GID environment variables as shown above.
diff --git a/Wiki/document.md b/Wiki/document.md
new file mode 100644
index 0000000..7c03f94
--- /dev/null
+++ b/Wiki/document.md
@@ -0,0 +1,46 @@
+# Document
+Document is [SQLite](https://www.sqlite.org) database which contains all notes, tree structure, metadata and most of the configuration.
+
+Location
+--------
+
+Document is stored in the [data directory](data-directory.md).
+
+Demo document
+-------------
+
+When you run Trilium for the first time, it will generate a demo document for you as a starting point. It's also pretty useful for demonstration of some of Trilium's features, e.g.:
+
+* [Relation map](relation-map.md)
+* [Day notes](day-notes.md)
+* [Weight tracker](weight-tracker.md)
+* [Task manager](task-manager.md)
+* [Custom CSS theme](themes.md)
+
+### Restoring demo document
+
+In some cases you might want to take a look at the demo document after you deleted it. Or you might want to see if there was something added (sometimes we add a new feature demonstration into demo document). In such case you can just [download .zip archive](https://github.com/TriliumNext/Notes/raw/stable/db/demo.zip) %%{WARNING}%% of the latest document and import it somewhere into the tree (right-click on a note where you want to import the demo document and choose "Import").
+
+Manually modifying the document
+-------------------------------
+
+Trilium provides a lot of flexibility, but with that you can also potentially shoot yourself in the foot (e.g. with startup script which blanks the app view).
+
+In such cases you can manually fix notes on the database layer - you can use e.g. [https://sqlitebrowser.org/](https://sqlitebrowser.org/) to open `document.db` file, find problematic notes and manually fix them. Don't forget to commit / write changes after you're done.
+
+How to reset the document
+-------------------------
+
+If you previously just experimented with Trilium and want to get it to the initial state, you can do that by deleting the `document.db*` files, e.g. like this:
+
+```text-plain
+rm document.db*
+```
+
+If you don't need to preserve e.g. the `config.ini`, then you can also delete the whole [data directory](data-directory.md) like this:
+
+```text-plain
+rm -r ./trilium-data
+```
+
+After starting next time, Trilium will create a new initial document.
diff --git a/Wiki/error-logs.md b/Wiki/error-logs.md
new file mode 100644
index 0000000..8a553e2
--- /dev/null
+++ b/Wiki/error-logs.md
@@ -0,0 +1,42 @@
+# 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](data-directory.md), 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:
+
+* in Trilium desktop app, go to top-left menu button -> Advanced -> Open Dev Tools
+* In Firefox/Chrome right-click anywhere in the page and click Inspect:
+
+![](images/error-logs-firefox-context-men.png)
+
+Once you have Dev Tools open, click on "Console" tab:
+
+![](images/error-logs-dev-tools.png)
+
+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 mail them to [zadam.apps@gmail.com](#root/N3Zt66yETj9g)
+
+Use this email to also provide anything which could assist in analysing the bug - e.g. files/images/ZIPs being imported or [anonymized database](anonymized-database.md).
+
+### 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:
+
+![](images/error-logs-export-subtree.png)
diff --git a/Wiki/etapi.md b/Wiki/etapi.md
new file mode 100644
index 0000000..17b3851
--- /dev/null
+++ b/Wiki/etapi.md
@@ -0,0 +1,29 @@
+# ETAPI
+ETAPI is Trilium's public/external REST API. It is available since Trilium v0.50.
+
+The documentation is in OpenAPI format, available [here](https://github.com/TriliumNext/Notes/blob/master/src/etapi/etapi.openapi.yaml).
+
+[trilium-py](https://github.com/Nriver/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](https://github.com/TriliumNext/Notes/blob/master/src/etapi/etapi.openapi.yaml)):
+
+```text-plain
+GET https://myserver.com/etapi/app-info
+Authorization: ETAPITOKEN
+```
+
+Alternatively, since 0.56 you can also use basic auth format:
+
+```text-plain
+GET https://myserver.com/etapi/app-info
+Authorization: Basic BATOKEN
+```
+
+* Where `BATOKEN = BASE64(username + ':' + password)` - this is a standard Basic Auth serialization
+* Where `username` is "etapi"
+* And `password` is the generated ETAPI token described above.
+
+Basic Auth is meant to be used with tools which support only basic auth.
diff --git a/Wiki/events.md b/Wiki/events.md
new file mode 100644
index 0000000..d081507
--- /dev/null
+++ b/Wiki/events.md
@@ -0,0 +1,31 @@
+# Events
+[Script](scripts.md) 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.
+
+* `run`
+ * `frontendStartup` - executes on frontend upon startup
+ * `mobileStartup` - executes on mobile frontend upon startup
+ * `backendStartup` - executes on backend upon startup
+ * `hourly` - executes once an hour on backend
+ * `daily` - executes once a day on backend
+
+Entity events
+-------------
+
+Other events are bound to some entity, these are defined as [relations](attributes.md) - meaning that script is triggered only if note has this script attached to it through relations (or it can inherit it).
+
+* `runOnNoteCreation` - executes when note is created on backend
+* `runOnNoteTitleChange` - executes when note title is changed (includes note creation as well)
+* `runOnNoteContentChange` - executes when note content is changed (includes note creation as well).
+* `runOnNoteChange` - executes when note is changed (includes note creation as well)
+* `runOnNoteDeletion` - executes when note is being deleted
+* `runOnBranchCreation` - executes when a branch is created. Branch is a link between parent note and child note and is created e.g. when cloning or moving note.
+* `runOnBranchChange` (since v0.62) - executes when a branch is changed - either expanded status or prefix are changed.
+* `runOnBranchDeletion` - executes when a branch is delete. Branch is a link between parent note and child note and is deleted e.g. when moving note (old branch/link is deleted).
+* `runOnChildNoteCreation` - executes when new note is created under _this_ note
+* `runOnAttributeCreation` - executes when new attribute is created under _this_ note
+* `runOnAttributeChange` - executes when attribute is changed under _this_ note
diff --git a/Wiki/evernote-import.md b/Wiki/evernote-import.md
new file mode 100644
index 0000000..18ac730
--- /dev/null
+++ b/Wiki/evernote-import.md
@@ -0,0 +1,21 @@
+# Evernote-import
+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](https://github.com/TriliumNext/Notes/issues). %%{WARNING}%%
diff --git a/Wiki/faq.md b/Wiki/faq.md
new file mode 100644
index 0000000..a4e5076
--- /dev/null
+++ b/Wiki/faq.md
@@ -0,0 +1,65 @@
+# 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](https://github.com/TriliumNext/Notes/issues/511) %%{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](https://github.com/Nriver/trilium-translation). 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:
+
+* it's a huge feature, or rather a Pandora's box of collaboration features like user management, permissions, conflict resolution, real-time editing of a note by multiple people etc. This would be a huge amount of work. Trilium Notes is project made mostly by one person in free time and that's unlikely to change in the future.
+* given its size it would probably pivot the attention away from my main focus which is a personal note-taking
+* the assumption that only single person has access to the app simplifies many things, or just outright makes them possible. In multi-user app, our [scripting](scripts.md) support would be a XSS security hole, while with the single user assumption it's an endless customizable tool.
+
+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 [document](document.md). 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](data-directory.md) 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:
+
+```text-plain
+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](synchronization.md).
+
+Why database instead of flat files?
+-----------------------------------
+
+Trilium stores notes in a [document](document.md) 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:
+
+* [clones](cloning-notes.md) are what you might call "hard directory link" in filesystem lingo, but this concept is not implemented in any filesystem
+* filesystems make a distinction between directory and file while there's intentionally no such difference in Trilium
+* files are stored in no particular order and user can't change this
+* Trilium allows storing note [attributes](attributes.md) which could be represented in extended user attributes but their support differs greatly among different filesystems / operating systems
+* Trilium makes links / relations between different notes which can be quickly retrieved / navigated (e.g. for [note map](note-map.md)). There's no such support in file systems which means these would have to be stored in some kind of side-car files (mini-databases).
+* Filesystems are generally not transactional. While this is not completely required for a note-taking application, having transactions make it way easier to keep notes and their metadata in predictable and consistent state.
diff --git a/Wiki/frontend-basics.md b/Wiki/frontend-basics.md
new file mode 100644
index 0000000..dcd83ca
--- /dev/null
+++ b/Wiki/frontend-basics.md
@@ -0,0 +1,60 @@
+# 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](script-api.md) 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](attributes.md) on the note containing the script.
+
+### Global Events
+
+This attribute is called `#run` and it can have any of the following values:
+
+* `frontendStartup` - executes on frontend upon startup.
+* `mobileStartup` - executes on mobile frontend upon startup.
+* `backendStartup` - executes on backend upon startup.
+* `hourly` - executes once an hour on backend.
+* `daily` - executes once a day on backend.
+
+### Entity Events
+
+These events are triggered by certain [relations](attributes.md) 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).
+
+* `runOnNoteCreation` - executes when note is created on backend.
+* `runOnNoteTitleChange` - executes when note title is changed (includes note creation as well).
+* `runOnNoteContentChange` - executes when note content is changed (includes note creation as well).
+* `runOnNoteChange` - executes when note is changed (includes note creation as well).
+* `runOnNoteDeletion` - executes when note is being deleted.
+* `runOnBranchCreation` - executes when a branch is created. Branch is a link between parent note and child note and is created e.g. when cloning or moving note.
+* `runOnBranchDeletion` - executes when a branch is delete. Branch is a link between parent note and child note and is deleted e.g. when moving note (old branch/link is deleted).
+* `runOnChildNoteCreation` - executes when new note is created under this note.
+* `runOnAttributeCreation` - executes when new attribute is created under this note.
+* `runOnAttributeChange` - executes when attribute is changed under this note.
+
+Widgets
+-------
+
+Conversely to scripts, widgets do have some specific requirements in order to work. A widget must:
+
+* Extend [BasicWidget](https://zadam.github.io/trilium/frontend_api/BasicWidget.html) or one of it's subclasses.
+* Create a new instance and assign it to `module.exports`.
+* Define a `parentWidget` member to determine where it should be displayed.
+* Define a `position` (integer) that determines the location via sort order.
+* Have a `#widget` attribute on the containing note.
+* Create, render, and return your element in the render function.
+ * For [BasicWidget](https://zadam.github.io/trilium/frontend_api/BasicWidget.html) and [NoteContextAwareWidget](https://zadam.github.io/trilium/frontend_api/NoteContextAwareWidget.html) you should create `this.$widget` and render it in `doRender()`.
+ * For [RightPanelWidget](https://zadam.github.io/trilium/frontend_api/RightPanelWidget.html) the `this.$widget` and `doRender()` are already handled and you should instead return the value in `doRenderBody()`.
+
+### parentWidget
+
+* `left-pane` - This renders the widget on the left side of the screen where the note tree lives.
+* `center-pane` - This renders the widget in the center of the layout in the same location that notes and splits appear.
+* `note-detail-pane` - This renders the widget _with_ the note in the center pane. This means it can appear multiple times with splits.
+* `right-pane` - This renders the widget to the right of any opened notes.
+
+### Tutorial
+
+For more information on building widgets, take a look at [Widget Basics](widget-basics.md).
diff --git a/Wiki/home.md b/Wiki/home.md
new file mode 100644
index 0000000..f332e8e
--- /dev/null
+++ b/Wiki/home.md
@@ -0,0 +1,46 @@
+# Home
+Overview
+--------
+
+Basic overview of the Trilium project is available at project homepage - [https://github.com/zadam/trilium#trilium-notes](https://github.com/zadam/trilium#trilium-notes)
+
+Inspiration for the name "Trilium":
+
+> Naming software is hard. I lived in Ontario when I first started the project and Trillium (the flower) is sort of a provincial logo, many institutions in Ontario are named "Trillium \[something\]". So I kept hearing/reading it almost everyday, I liked the sound of it and its nature motif, so I just reused it.
+
+> ~ Zadam (Trilium Developer)
+
+Documentation
+-------------
+
+This [wiki](https://github.com/TriliumNext/Notes/wiki) %%{WARNING}%% contains additional and more in-depth information on some topics. See the sidebar for listing of all available pages.
+
+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](desktop-installation.md)
+
+**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](server-installation.md)
+2. [Mobile frontend](mobile-frontend.md) (optional)
+3. [![Deploy](images/Home%20button.svg)](https://heroku.com/deploy?template=https://github.com/feilongfl/trilium-heroku)
+4. [3rd party paid service to host a Trilium instance for you](https://trilium.cc/paid-hosting)
+
+**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](server-installation.md)
+2. [Mobile frontend](mobile-frontend.md) (optional)
+3. [Desktop installation](desktop-installation.md)
+4. [Synchronization](synchronization.md)
+
+Basic concepts
+--------------
+
+1. Understand [Note](note.md)
+2. Watch the [Screenshot tour](screenshot-tour.md)
diff --git a/Wiki/images.md b/Wiki/images.md
new file mode 100644
index 0000000..fbcd066
--- /dev/null
+++ b/Wiki/images.md
@@ -0,0 +1,24 @@
+# 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](attachments.md) or as a standalone [note](tree-concepts.md) placed into the [note tree](tree-concepts.md). 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.
+
+![](images/upload-image.gif)
+
+Alternatively you can click on block toolbar and then on "Insert image":
+
+![](images/block-toolbar-insert-image.png)
+
+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").
diff --git a/Wiki/images/1-theme-gallery-image.png b/Wiki/images/1-theme-gallery-image.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f07aeb64c374827faf53e230b68a341ed2fc63d
GIT binary patch
literal 269837
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