From 0298c62ec76bb5f68c083e81604956b05c845401 Mon Sep 17 00:00:00 2001
From: perf3ct If you are having timezone issues and you are not using docker-compose,
you may need to add a Note on timezones
TZ
environment variable with the TZ identifier of
- your local timezone.
If you would prefer to run Trilium without having to run the Docker container
+ as root
, you can use either of the provided Debian (default)
+ and Alpine-based images with the rootless
tag.
If you're unsure, stick to the “rootful” Docker image referenced above. +
+Below are some commands to pull the rootless images:
# For Debian-based image
+docker pull triliumnext/notes:rootless
+
+# For Alpine-based image
+docker pull triliumnext/notes:rootless-alpine
+Running containers as non-root is a security best practice that reduces + the potential impact of container breakouts. If an attacker manages to + escape the container, they'll only have the permissions of the non-root + user instead of full root access to the host.
+The rootless Trilium image:
+trilium
) during build time--user
flagentrypoint
script# Run with default UID/GID (1000:1000)
+docker-compose -f docker-compose.rootless.yml up -d
+
+# Run with custom UID/GID (e.g., match your host user)
+TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootless.yml up -d
+
+# Specify a custom data directory
+TRILIUM_DATA_DIR=/path/to/your/data TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootless.yml up -d
+
+# Build the image
+docker build -t triliumnext/notes:rootless -f apps/server/Dockerfile.rootless .
+
+# Run with default UID/GID (1000:1000)
+docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+
+# Run with custom UID/GID
+docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+
+TRILIUM_UID
: UID to use for the container process (passed
+ to Docker's --user
flag)TRILIUM_GID
: GID to use for the container process (passed
+ to Docker's --user
flag)TRILIUM_DATA_DIR
: Path to the data directory inside the container
+ (default: /home/node/trilium-data
)If you encounter permission issues with the data volume, ensure that:
+TRILIUM_UID
and TRILIUM_GID
to
+ match the owner of the host directory# For example, if your data directory is owned by UID 1001 and GID 1001:
+TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d
+
+usermod
/groupmod
commandsTwo rootless variants are provided:
+apps/server/Dockerfile.rootless
+ apps/server/Dockerfile.alpine.rootless
+ If you would prefer, you can also customize the UID/GID at build time:
# For Debian-based image with custom UID/GID
+docker build --build-arg USER=myuser --build-arg UID=1001 --build-arg GID=1001 \
+ -t triliumnext/notes:rootless-custom -f apps/server/Dockerfile.rootless .
+
+# For Alpine-based image with custom UID/GID
+docker build --build-arg USER=myuser --build-arg UID=1001 --build-arg GID=1001 \
+ -t triliumnext/notes:alpine-rootless-custom -f apps/server/Dockerfile.alpine.rootless .
+
+Available build arguments:
+USER
: Username for the non-root user (default: trilium)UID
: User ID for the non-root user (default: 1000)GID
: Group ID for the non-root user (default: 1000)\ No newline at end of file diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md index 5384f5b87..5b4010e40 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md +++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md @@ -117,4 +117,120 @@ The `--user` directive is unsupported. Instead, use the `USER_UID` and `USER_GID ### 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](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) of your local timezone. \ No newline at end of file +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](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) of your local timezone. + +## Rootless Docker Image + +If you would prefer to run Trilium without having to run the Docker container as `root`, you can use either of the provided Debian (default) and Alpine-based images with the `rootless` tag. + +_**If you're unsure, stick to the “rootful” Docker image referenced above.**_ + +Below are some commands to pull the rootless images: + +```sh +# For Debian-based image +docker pull triliumnext/notes:rootless + +# For Alpine-based image +docker pull triliumnext/notes:rootless-alpine +``` + +### Why Rootless? + +Running containers as non-root is a security best practice that reduces the potential impact of container breakouts. If an attacker manages to escape the container, they'll only have the permissions of the non-root user instead of full root access to the host. + +### How It Works + +The rootless Trilium image: + +1. Creates a non-root user (`trilium`) during build time +2. Configures the application to run as this non-root user +3. Allows runtime customization of the user's UID/GID via Docker's `--user` flag +4. Does not require a separate Docker `entrypoint` script + +### Usage + +#### **Using docker-compose (Recommended)** + +``` +# Run with default UID/GID (1000:1000) +docker-compose -f docker-compose.rootless.yml up -d + +# Run with custom UID/GID (e.g., match your host user) +TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootless.yml up -d + +# Specify a custom data directory +TRILIUM_DATA_DIR=/path/to/your/data TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootless.yml up -d + +``` + +#### **Using Docker CLI** + +```sh +# Build the image +docker build -t triliumnext/notes:rootless -f apps/server/Dockerfile.rootless . + +# Run with default UID/GID (1000:1000) +docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless + +# Run with custom UID/GID +docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless + +``` + +### Environment Variables + +* `TRILIUM_UID`: UID to use for the container process (passed to Docker's `--user` flag) +* `TRILIUM_GID`: GID to use for the container process (passed to Docker's `--user` flag) +* `TRILIUM_DATA_DIR`: Path to the data directory inside the container (default: `/home/node/trilium-data`) + +### Volume Permissions + +If you encounter permission issues with the data volume, ensure that: + +1. The host directory has appropriate permissions for the UID/GID you're using +2. You're setting both `TRILIUM_UID` and `TRILIUM_GID` to match the owner of the host directory + +```sh +# For example, if your data directory is owned by UID 1001 and GID 1001: +TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d + +``` + +### Considerations + +* The container starts with a specific UID/GID which can be customized at runtime +* Unlike the traditional setup, this approach does not use a separate entrypoint script with `usermod`/`groupmod` commands +* The container cannot modify its own UID/GID at runtime, which is a security feature of rootless containers + +### Available Rootless Images + +Two rootless variants are provided: + +1. **Debian-based** (default): Uses the Debian Bullseye Slim base image + * Dockerfile: `apps/server/Dockerfile.rootless` + * Recommended for most users +2. **Alpine-based**: Uses the Alpine base image for smaller size + * Dockerfile: `apps/server/Dockerfile.alpine.rootless` + * Smaller image size, but may have compatibility issues with some systems + +### Building Custom Rootless Images + +If you would prefer, you can also customize the UID/GID at build time: + +``` +# For Debian-based image with custom UID/GID +docker build --build-arg USER=myuser --build-arg UID=1001 --build-arg GID=1001 \ + -t triliumnext/notes:rootless-custom -f apps/server/Dockerfile.rootless . + +# For Alpine-based image with custom UID/GID +docker build --build-arg USER=myuser --build-arg UID=1001 --build-arg GID=1001 \ + -t triliumnext/notes:alpine-rootless-custom -f apps/server/Dockerfile.alpine.rootless . + +``` + +Available build arguments: + +* `USER`: Username for the non-root user (default: trilium) +* `UID`: User ID for the non-root user (default: 1000) +* `GID`: Group ID for the non-root user (default: 1000) \ No newline at end of file From d73a289a05d0b3dfb8e64207e96d668ba788c09e Mon Sep 17 00:00:00 2001 From: perfectra1n
TZ
environment variable with the TZ identifier of
your local timezone.
If you would prefer to run Trilium without having to run the Docker container
as root
, you can use either of the provided Debian (default)
and Alpine-based images with the rootless
tag.
If you're unsure, stick to the “rootful” Docker image referenced above.
-Below are some commands to pull the rootless images:
# For Debian-based image
+Below are some commands to pull the rootless images:
# For Debian-based image
docker pull triliumnext/notes:rootless
# For Alpine-based image
@@ -111,14 +116,14 @@ TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootl
# Specify a custom data directory
TRILIUM_DATA_DIR=/path/to/your/data TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootless.yml up -d
-Using Docker CLI
# Build the image
+Using Docker CLI
# Build the image
docker build -t triliumnext/notes:rootless -f apps/server/Dockerfile.rootless .
# Run with default UID/GID (1000:1000)
-docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless
# Run with custom UID/GID
-docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless
Environment Variables
@@ -136,7 +141,7 @@ docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-
using
- You're setting both
TRILIUM_UID
and TRILIUM_GID
to
match the owner of the host directory
-
# For example, if your data directory is owned by UID 1001 and GID 1001:
+# For example, if your data directory is owned by UID 1001 and GID 1001:
TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d
Considerations
@@ -182,5 +187,4 @@ docker build --build-arg USER=myuser --build-arg UID=1001 --build-arg GID=1001 \
USER
: Username for the non-root user (default: trilium)
UID
: User ID for the non-root user (default: 1000)
GID
: Group ID for the non-root user (default: 1000)
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index 3acbe598c..f3594bb61 100644
--- a/docs/User Guide/!!!meta.json
+++ b/docs/User Guide/!!!meta.json
@@ -8521,191 +8521,184 @@
{
"type": "relation",
"name": "internalLink",
- "value": "_help_YKWqdJhzi2VY",
+ "value": "OFXdgB2nNk1F",
"isInheritable": false,
"position": 50
},
{
"type": "relation",
"name": "internalLink",
- "value": "OFXdgB2nNk1F",
+ "value": "BlN9DFI679QC",
"isInheritable": false,
"position": 60
},
{
"type": "relation",
"name": "internalLink",
- "value": "BlN9DFI679QC",
+ "value": "vZWERwf8U3nx",
"isInheritable": false,
"position": 70
},
{
"type": "relation",
"name": "internalLink",
- "value": "vZWERwf8U3nx",
+ "value": "oPVyFC7WL2Lp",
"isInheritable": false,
"position": 80
},
{
"type": "relation",
"name": "internalLink",
- "value": "oPVyFC7WL2Lp",
+ "value": "GPERMystNGTB",
"isInheritable": false,
"position": 90
},
{
"type": "relation",
"name": "internalLink",
- "value": "GPERMystNGTB",
+ "value": "CoFPLs3dRlXc",
"isInheritable": false,
"position": 100
},
{
"type": "relation",
"name": "internalLink",
- "value": "CoFPLs3dRlXc",
+ "value": "AlhDUqhENtH7",
"isInheritable": false,
"position": 110
},
{
"type": "relation",
"name": "internalLink",
- "value": "AlhDUqhENtH7",
+ "value": "pKK96zzmvBGf",
"isInheritable": false,
"position": 120
},
{
"type": "relation",
"name": "internalLink",
- "value": "pKK96zzmvBGf",
+ "value": "WFGzWeUK6arS",
"isInheritable": false,
"position": 130
},
{
"type": "relation",
"name": "internalLink",
- "value": "WFGzWeUK6arS",
+ "value": "0ESUbbAxVnoK",
"isInheritable": false,
"position": 140
},
{
"type": "relation",
"name": "internalLink",
- "value": "0ESUbbAxVnoK",
+ "value": "J5Ex1ZrMbyJ6",
"isInheritable": false,
"position": 150
},
{
"type": "relation",
"name": "internalLink",
- "value": "J5Ex1ZrMbyJ6",
+ "value": "d3fAXQ2diepH",
"isInheritable": false,
"position": 160
},
{
"type": "relation",
"name": "internalLink",
- "value": "d3fAXQ2diepH",
+ "value": "MgibgPcfeuGz",
"isInheritable": false,
"position": 170
},
{
"type": "relation",
"name": "internalLink",
- "value": "MgibgPcfeuGz",
+ "value": "m523cpzocqaD",
"isInheritable": false,
"position": 180
},
{
"type": "relation",
"name": "internalLink",
- "value": "m523cpzocqaD",
+ "value": "9sRHySam5fXb",
"isInheritable": false,
"position": 190
},
{
"type": "relation",
"name": "internalLink",
- "value": "9sRHySam5fXb",
+ "value": "u3YFHC9tQlpm",
"isInheritable": false,
"position": 200
},
{
"type": "relation",
"name": "internalLink",
- "value": "u3YFHC9tQlpm",
+ "value": "R9pX4DGra2Vt",
"isInheritable": false,
"position": 210
},
{
"type": "relation",
"name": "internalLink",
- "value": "R9pX4DGra2Vt",
+ "value": "iRwzGnHPzonm",
"isInheritable": false,
"position": 220
},
{
"type": "relation",
"name": "internalLink",
- "value": "iRwzGnHPzonm",
+ "value": "BCkXAVs63Ttv",
"isInheritable": false,
"position": 230
},
{
"type": "relation",
"name": "internalLink",
- "value": "BCkXAVs63Ttv",
+ "value": "47ZrP6FNuoG8",
"isInheritable": false,
"position": 240
},
{
"type": "relation",
"name": "internalLink",
- "value": "47ZrP6FNuoG8",
+ "value": "KC1HB96bqqHX",
"isInheritable": false,
"position": 250
},
{
"type": "relation",
"name": "internalLink",
- "value": "KC1HB96bqqHX",
+ "value": "BFvAtE74rbP6",
"isInheritable": false,
"position": 260
},
{
"type": "relation",
"name": "internalLink",
- "value": "BFvAtE74rbP6",
+ "value": "bdUJEHsAPYQR",
"isInheritable": false,
"position": 270
},
{
"type": "relation",
"name": "internalLink",
- "value": "bdUJEHsAPYQR",
+ "value": "AxshuNRegLAv",
"isInheritable": false,
"position": 280
},
{
"type": "relation",
"name": "internalLink",
- "value": "AxshuNRegLAv",
+ "value": "81SGnPGMk7Xc",
"isInheritable": false,
"position": 290
},
- {
- "type": "relation",
- "name": "internalLink",
- "value": "81SGnPGMk7Xc",
- "isInheritable": false,
- "position": 300
- },
{
"type": "relation",
"name": "internalLink",
"value": "xWbu3jpNWapp",
"isInheritable": false,
- "position": 310
+ "position": 300
},
{
"type": "label",
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md
index 5b4010e40..0f711f89e 100644
--- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md
@@ -121,13 +121,16 @@ If you are having timezone issues and you are not using docker-compose, you may
## Rootless Docker Image
+> [!NOTE]
+> Please keep in mind that the data directory is at `/home/trilium/trilium-data` instead of the typical `/home/node/trilium-data`. This is because a new user is created and used to run Trilium within the rootless containers.
+
If you would prefer to run Trilium without having to run the Docker container as `root`, you can use either of the provided Debian (default) and Alpine-based images with the `rootless` tag.
_**If you're unsure, stick to the “rootful” Docker image referenced above.**_
Below are some commands to pull the rootless images:
-```sh
+```
# For Debian-based image
docker pull triliumnext/notes:rootless
@@ -166,15 +169,15 @@ TRILIUM_DATA_DIR=/path/to/your/data TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) do
#### **Using Docker CLI**
-```sh
+```
# Build the image
docker build -t triliumnext/notes:rootless -f apps/server/Dockerfile.rootless .
# Run with default UID/GID (1000:1000)
-docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless
# Run with custom UID/GID
-docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless
```
@@ -191,7 +194,7 @@ If you encounter permission issues with the data volume, ensure that:
1. The host directory has appropriate permissions for the UID/GID you're using
2. You're setting both `TRILIUM_UID` and `TRILIUM_GID` to match the owner of the host directory
-```sh
+```
# For example, if your data directory is owned by UID 1001 and GID 1001:
TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d
From aa10638fd80b8b8ab441c933b33a97456e94565d Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 25 May 2025 21:25:43 +0300
Subject: [PATCH 08/24] feat(nx/server): add build/run scripts for docker
rootless
---
apps/server/package.json | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/apps/server/package.json b/apps/server/package.json
index df48848cc..65d9cdbd2 100644
--- a/apps/server/package.json
+++ b/apps/server/package.json
@@ -149,6 +149,12 @@
},
"alpine": {
"command": "docker build . -t triliumnext-alpine -f Dockerfile.alpine"
+ },
+ "rootless-debian": {
+ "command": "docker build . -t triliumnext-rootless-debian -f Dockerfile.rootless"
+ },
+ "rootless-alpine": {
+ "command": "docker build . -t triliumnext-rootless-alpine -f Dockerfile.alpine.rootless"
}
}
},
@@ -164,6 +170,12 @@
},
"alpine": {
"command": "docker run -p 8081:8080 triliumnext-alpine"
+ },
+ "rootless-debian": {
+ "command": "docker run -p 8081:8080 triliumnext-rootless-debian"
+ },
+ "rootless-alpine": {
+ "command": "docker run -p 8081:8080 triliumnext-rootless-alpine"
}
}
},
From 84ab4dcb8b20aa0f51672eb0f8585e75823310dc Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 25 May 2025 21:45:42 +0300
Subject: [PATCH 09/24] chore(docker): format Dockerfiles
---
apps/server/Dockerfile | 44 +++++++++++++++++------------------
apps/server/Dockerfile.alpine | 38 +++++++++++++++---------------
2 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile
index 1e357f6fe..dbb021f58 100644
--- a/apps/server/Dockerfile
+++ b/apps/server/Dockerfile
@@ -1,28 +1,28 @@
FROM node:22.16.0-bullseye-slim AS builder
- RUN corepack enable
+RUN corepack enable
- # Install native dependencies since we might be building cross-platform.
- WORKDIR /usr/src/app/build
- COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
- # We have to use --no-frozen-lockfile due to CKEditor patches
- RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
+# Install native dependencies since we might be building cross-platform.
+WORKDIR /usr/src/app/build
+COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
+# We have to use --no-frozen-lockfile due to CKEditor patches
+RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
FROM node:22.16.0-bullseye-slim
- # Install only runtime dependencies
- RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gosu && \
- rm -rf \
- /var/lib/apt/lists/* \
- /var/cache/apt/*
+# Install only runtime dependencies
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends \
+ gosu && \
+ rm -rf \
+ /var/lib/apt/lists/* \
+ /var/cache/apt/*
- WORKDIR /usr/src/app
- COPY ./dist /usr/src/app
- RUN rm -rf /usr/src/app/node_modules/better-sqlite3
- COPY --from=builder /usr/src/app/node_modules/better-sqlite3 /usr/src/app/node_modules/better-sqlite3
- COPY ./start-docker.sh /usr/src/app
+WORKDIR /usr/src/app
+COPY ./dist /usr/src/app
+RUN rm -rf /usr/src/app/node_modules/better-sqlite3
+COPY --from=builder /usr/src/app/node_modules/better-sqlite3 /usr/src/app/node_modules/better-sqlite3
+COPY ./start-docker.sh /usr/src/app
- # Configure container
- EXPOSE 8080
- CMD [ "sh", "./start-docker.sh" ]
- HEALTHCHECK --start-period=10s CMD exec gosu node node /usr/src/app/docker_healthcheck.cjs
\ No newline at end of file
+# Configure container
+EXPOSE 8080
+CMD [ "sh", "./start-docker.sh" ]
+HEALTHCHECK --start-period=10s CMD exec gosu node node /usr/src/app/docker_healthcheck.cjs
\ No newline at end of file
diff --git a/apps/server/Dockerfile.alpine b/apps/server/Dockerfile.alpine
index 24d0dcb12..3b96950f1 100644
--- a/apps/server/Dockerfile.alpine
+++ b/apps/server/Dockerfile.alpine
@@ -1,26 +1,26 @@
FROM node:22.16.0-alpine AS builder
- RUN corepack enable
+RUN corepack enable
- # Install native dependencies since we might be building cross-platform.
- WORKDIR /usr/src/app
- COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
- # We have to use --no-frozen-lockfile due to CKEditor patches
- RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
+# Install native dependencies since we might be building cross-platform.
+WORKDIR /usr/src/app
+COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
+# We have to use --no-frozen-lockfile due to CKEditor patches
+RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
FROM node:22.16.0-alpine
- # Install runtime dependencies
- RUN apk add --no-cache su-exec shadow
+# Install runtime dependencies
+RUN apk add --no-cache su-exec shadow
- WORKDIR /usr/src/app
- COPY ./dist /usr/src/app
- RUN rm -rf /usr/src/app/node_modules/better-sqlite3
- COPY --from=builder /usr/src/app/node_modules/better-sqlite3 /usr/src/app/node_modules/better-sqlite3
- COPY ./start-docker.sh /usr/src/app
+WORKDIR /usr/src/app
+COPY ./dist /usr/src/app
+RUN rm -rf /usr/src/app/node_modules/better-sqlite3
+COPY --from=builder /usr/src/app/node_modules/better-sqlite3 /usr/src/app/node_modules/better-sqlite3
+COPY ./start-docker.sh /usr/src/app
- # Add application user
- RUN adduser -s /bin/false node; exit 0
+# Add application user
+RUN adduser -s /bin/false node; exit 0
- # Configure container
- EXPOSE 8080
- CMD [ "sh", "./start-docker.sh" ]
- HEALTHCHECK --start-period=10s CMD exec su-exec node node /usr/src/app/docker_healthcheck.cjs
\ No newline at end of file
+# Configure container
+EXPOSE 8080
+CMD [ "sh", "./start-docker.sh" ]
+HEALTHCHECK --start-period=10s CMD exec su-exec node node /usr/src/app/docker_healthcheck.cjs
\ No newline at end of file
From b635c74d014dc7832d25e95bf104b991f34e6139 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 25 May 2025 21:47:35 +0300
Subject: [PATCH 10/24] fix(docker/rootless): copy sequence after switch to
esbuild
---
apps/server/Dockerfile.alpine | 2 +-
apps/server/Dockerfile.alpine.rootless | 2 +-
apps/server/Dockerfile.rootless | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/apps/server/Dockerfile.alpine b/apps/server/Dockerfile.alpine
index 3b96950f1..18bc42bf5 100644
--- a/apps/server/Dockerfile.alpine
+++ b/apps/server/Dockerfile.alpine
@@ -3,7 +3,7 @@ RUN corepack enable
# Install native dependencies since we might be building cross-platform.
WORKDIR /usr/src/app
-COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
+COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
# We have to use --no-frozen-lockfile due to CKEditor patches
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
diff --git a/apps/server/Dockerfile.alpine.rootless b/apps/server/Dockerfile.alpine.rootless
index 7105d1609..5e6cba525 100644
--- a/apps/server/Dockerfile.alpine.rootless
+++ b/apps/server/Dockerfile.alpine.rootless
@@ -3,7 +3,7 @@ RUN corepack enable
# Install native dependencies since we might be building cross-platform.
WORKDIR /usr/src/app
-COPY ./dist/package.json ./dist/pnpm-lock.yaml ./docker/pnpm-workspace.yaml /usr/src/app/
+COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
# We have to use --no-frozen-lockfile due to CKEditor patches
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
diff --git a/apps/server/Dockerfile.rootless b/apps/server/Dockerfile.rootless
index 541e970e5..df94ddb90 100644
--- a/apps/server/Dockerfile.rootless
+++ b/apps/server/Dockerfile.rootless
@@ -3,7 +3,7 @@ RUN corepack enable
# Install native dependencies since we might be building cross-platform.
WORKDIR /usr/src/app/build
-COPY ./dist/package.json ./dist/pnpm-lock.yaml ./docker/pnpm-workspace.yaml /usr/src/app/
+COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
# We have to use --no-frozen-lockfile due to CKEditor patches
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
From 93c939bf08c9432f2a350f118f6287af7407c5b1 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 25 May 2025 21:48:12 +0300
Subject: [PATCH 11/24] fix(docker/rootless): main entry point extension
---
apps/server/rootless-entrypoint.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/server/rootless-entrypoint.sh b/apps/server/rootless-entrypoint.sh
index 9f4898df3..0d580285f 100755
--- a/apps/server/rootless-entrypoint.sh
+++ b/apps/server/rootless-entrypoint.sh
@@ -25,4 +25,4 @@ fi
mkdir -p "${TRILIUM_DATA_DIR}"
# Start the app
-exec node ./main
+exec node ./main.cjs
From 76bc3d858cb99dd0e077c197d4988d9145ee53fc Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Tue, 27 May 2025 18:22:10 +0300
Subject: [PATCH 12/24] fix(edit-demo): path to demo database
---
apps/edit-docs/src/edit-demo.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/apps/edit-docs/src/edit-demo.ts b/apps/edit-docs/src/edit-demo.ts
index 936ddd157..162467ae6 100644
--- a/apps/edit-docs/src/edit-demo.ts
+++ b/apps/edit-docs/src/edit-demo.ts
@@ -2,8 +2,9 @@ import { extractZip, initializeDatabase, startElectron } from "./utils.js";
import { initializeTranslations } from "@triliumnext/server/src/services/i18n.js";
import debounce from "@triliumnext/client/src/services/debounce.js";
import fs from "fs/promises";
+import { join } from "path";
-const DEMO_ZIP_PATH = "db/demo.zip";
+const DEMO_ZIP_PATH = join(__dirname, "../../server/src/assets/db/demo.zip");
async function main() {
await initializeTranslations();
From 7cb4cc84690d09704f8e208da22353ed996caeb9 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Tue, 27 May 2025 18:32:00 +0300
Subject: [PATCH 13/24] fix(edit-demo): get it to actually start
---
apps/edit-docs/src/edit-demo.ts | 9 ++++++---
apps/edit-docs/src/edit-docs.ts | 18 ++----------------
apps/edit-docs/src/utils.ts | 29 +++++++++++++++++++++++++++--
3 files changed, 35 insertions(+), 21 deletions(-)
diff --git a/apps/edit-docs/src/edit-demo.ts b/apps/edit-docs/src/edit-demo.ts
index 162467ae6..a51e48e73 100644
--- a/apps/edit-docs/src/edit-demo.ts
+++ b/apps/edit-docs/src/edit-demo.ts
@@ -7,11 +7,14 @@ import { join } from "path";
const DEMO_ZIP_PATH = join(__dirname, "../../server/src/assets/db/demo.zip");
async function main() {
+ const initializedPromise = startElectron(() => {
+ // Wait for the import to be finished and the application to be loaded before we listen to changes.
+ setTimeout(() => registerHandlers(), 10_000);
+ });
+
await initializeTranslations();
await initializeDatabase(false);
-
- await startElectron();
- await registerHandlers();
+ initializedPromise.resolve();
}
async function registerHandlers() {
diff --git a/apps/edit-docs/src/edit-docs.ts b/apps/edit-docs/src/edit-docs.ts
index 889e2f55c..7266ad323 100644
--- a/apps/edit-docs/src/edit-docs.ts
+++ b/apps/edit-docs/src/edit-docs.ts
@@ -6,16 +6,13 @@ import { initializeTranslations } from "@triliumnext/server/src/services/i18n.js
import archiver, { type Archiver } from "archiver";
import type { WriteStream } from "fs";
import debounce from "@triliumnext/client/src/services/debounce.js";
-import { extractZip, initializeDatabase } from "./utils.js";
+import { extractZip, initializeDatabase, startElectron } from "./utils.js";
import cls from "@triliumnext/server/src/services/cls.js";
import type { AdvancedExportOptions } from "@triliumnext/server/src/services/export/zip.js";
import TaskContext from "@triliumnext/server/src/services/task_context.js";
-import { deferred } from "@triliumnext/server/src/services/utils.js";
import { parseNoteMetaFile } from "@triliumnext/server/src/services/in_app_help.js";
import { resolve } from "path";
import type NoteMeta from "@triliumnext/server/src/services/meta/note_meta.js";
-import electron from "electron";
-import windowService from "@triliumnext/server/src/services/window.js";
interface NoteMapping {
rootNoteId: string;
@@ -56,18 +53,7 @@ const NOTE_MAPPINGS: NoteMapping[] = [
];
async function main() {
- const initializedPromise = deferred();
- electron.app.on("ready", async () => {
- await initializedPromise;
-
- console.log("Electron is ready!");
-
- // Start the server.
- await import("@triliumnext/server/src/main.js");
-
- // Create the main window.
- await windowService.createMainWindow(electron.app);
-
+ const initializedPromise = startElectron(() => {
// Wait for the import to be finished and the application to be loaded before we listen to changes.
setTimeout(() => registerHandlers(), 10_000);
});
diff --git a/apps/edit-docs/src/utils.ts b/apps/edit-docs/src/utils.ts
index 8c7758f62..fc11eb8fb 100644
--- a/apps/edit-docs/src/utils.ts
+++ b/apps/edit-docs/src/utils.ts
@@ -2,6 +2,9 @@ import cls from "@triliumnext/server/src/services/cls.js";
import fs from "fs/promises";
import fsExtra from "fs-extra";
import path from "path";
+import electron from "electron";
+import { deferred, type DeferredPromise } from "@triliumnext/server/src/services/utils.js";
+import windowService from "@triliumnext/server/src/services/window.js";
export function initializeDatabase(skipDemoDb: boolean) {
return new Promise(async (resolve) => {
@@ -15,8 +18,30 @@ export function initializeDatabase(skipDemoDb: boolean) {
});
}
-export async function startElectron() {
- await import("@triliumnext/desktop/src/electron-main.js");
+/**
+ * Electron has a behaviour in which the "ready" event must have a listener attached before it gets to initialize.
+ * If async tasks are awaited before the "ready" event is bound, then the window will never shown.
+ * This method works around by creating a deferred promise. It will immediately bind to the "ready" event and wait for that promise to be resolved externally.
+ *
+ * @param callback a method to be called after the server and Electron is initialized.
+ * @returns the deferred promise that must be resolved externally before the Electron app is started.
+ */
+export function startElectron(callback: () => void): DeferredPromise {
+ const initializedPromise = deferred();
+ electron.app.on("ready", async () => {
+ await initializedPromise;
+
+ console.log("Electron is ready!");
+
+ // Start the server.
+ await import("@triliumnext/server/src/main.js");
+
+ // Create the main window.
+ await windowService.createMainWindow(electron.app);
+
+ callback();
+ });
+ return initializedPromise;
}
export async function extractZip(zipFilePath: string, outputPath: string, ignoredFiles?: Set) {
From 099e73b1147ed6e99744f909206be2e368930e90 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Tue, 27 May 2025 18:34:04 +0300
Subject: [PATCH 14/24] chore(demo): move to right directory
---
.../edit-docs}/demo/!!!meta.json | 0
{_regroup => apps/edit-docs}/demo/index.html | 0
.../edit-docs}/demo/navigation.html | 0
.../edit-docs}/demo/root/Journal.dat | 0
.../edit-docs}/demo/root/Trilium Demo.html | 0
.../Trilium Demo/Books/Book template.html | 0
.../Books/Book template/Highlights.html | 0
.../Books/Reviews/The Mechanical.clone.html | 0
.../demo/root/Trilium Demo/Books/To read.html | 0
.../Formatting examples/Checkbox lists.html | 0
.../Formatting examples/Code blocks.html | 0
.../Formatting examples/Highlighting.html | 0
.../Formatting examples/Math.html | 0
.../Formatting examples/School schedule.html | 0
.../demo/root/Trilium Demo/Inbox.html | 0
.../root/Trilium Demo/Inbox/Book to read.html | 0
.../Inbox/Grocery list for today.html | 0
.../Trilium Demo/Inbox/The Last Question.html | 0
.../The Last Question by Issac.pdf | Bin
.../demo/root/Trilium Demo/Journal.html | 0
.../2021/11 - November/28 - Tuesday.html | 0
.../28 - Tuesday/Christmas gift ideas.html | 0
.../Phone call about work project.html | 0
.../28 - Tuesday/Trusted timestamping.html | 0
.../2021/12 - December/18 - Monday.html | 0
.../18 - Monday/Meeting minutes.html | 0
.../18 - Monday/Photos from the trip/01.jpeg | Bin
.../18 - Monday/Photos from the trip/02.jpeg | Bin
.../18 - Monday/Photos from the trip/03.jpeg | Bin
.../18 - Monday/Photos from the trip/04.jpeg | Bin
.../18 - Monday/Photos from the trip/05.jpeg | Bin
.../18 - Monday/Photos from the trip/06.jpeg | Bin
.../18 - Monday/Photos from the trip/07.jpeg | Bin
.../18 - Monday/Photos from the trip/08.jpeg | Bin
.../18 - Monday/Photos from the trip/09.jpeg | Bin
.../18 - Monday/Photos from the trip/10.jpeg | Bin
.../18 - Monday/Photos from the trip/11.jpeg | Bin
.../18 - Monday/Photos from the trip/12.jpeg | Bin
.../TODO - Send invites for christ.html | 0
.../2021/12 - December/19 - Tuesday.html | 0
.../DONE - Dentist appointment.html | 0
.../2021/12 - December/20 - Wednesday.html | 0
.../2021/12 - December/21 - Thursday.html | 0
.../21 - Thursday/Christmas shopping.html | 0
.../21 - Thursday/Office party.html | 0
.../2021/12 - December/22 - Friday.html | 0
.../22 - Friday/Christmas shopping.html | 0
.../22 - Friday/The Mechanical.html | 0
.../The Mechanical/Highlights.html | 0
.../2021/12 - December/23 - Saturday.html | 0
.../24 - Sunday - Christmas Eve!.html | 0
.../DONE - Buy a board game fo.jpg | Bin
.../DONE - Buy a board game for Al.html | 0
.../TODO - Buy milk.html | 0
.../2021/12 - December/30 - Thursday.html | 0
.../root/Trilium Demo/Journal/2021/Epics.html | 0
.../Journal/2021/Epics/Christmas.html | 0
.../Epics/Christmas/Christmas dinner.html | 0
...11. 2017 - Christmas gift ideas.clone.html | 0
.../2021/Epics/Christmas/Vacation days.html | 0
.../Journal/2021/Epics/Vacation.html | 0
.../Trilium Demo/Journal/Day template.html | 0
.../root/Trilium Demo/Note Types/Canvas.json | 0
.../Note Types/Canvas_canvas-export.svg | 0
.../Geo Map (The Seven Wonders of .json | 0
.../Chichén Itzá, Mexico.html | 0
.../Christ the Redeemer, Brazil.html | 0
.../Machu Picchu, Peru.html | 0
.../Petra, Jordan.html | 0
.../The Colosseum, Rome, Italy.html | 0
.../The Great Wall of China.html | 0
.../The Taj Mahal, India.html | 0
.../Note Types/Mermaid Diagrams/Bar chart.txt | 0
.../Bar chart_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/C4.txt | 0
.../Mermaid Diagrams/C4_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Class.txt | 0
.../Mermaid Diagrams/Class_mermaid-export.svg | 0
.../Mermaid Diagrams/Entity Relationship.txt | 0
.../Entity Relationship_mermai.svg | 0
.../Mermaid Diagrams/Flow (ELK).txt | 0
.../Flow (ELK)_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Flow.txt | 0
.../Mermaid Diagrams/Flow_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Gantt.txt | 0
.../Mermaid Diagrams/Gantt_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Git.txt | 0
.../Mermaid Diagrams/Git_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Journey.txt | 0
.../Journey_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Mind Map.txt | 0
.../Mind Map_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Pie.txt | 0
.../Mermaid Diagrams/Pie_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/Sequence.txt | 0
.../Sequence_mermaid-export.svg | 0
.../Note Types/Mermaid Diagrams/State.txt | 0
.../Mermaid Diagrams/State_mermaid-export.svg | 0
.../Trilium Demo/Note Types/Mind Map.json | 0
.../Note Types/Mind Map_mindmap-export.svg | 0
.../Custom request handler.js | 0
.../Statistics/Attribute count/template.html | 0
.../Statistics/Attribute count/template/js.js | 0
.../template/js/renderPieChart.js | 0
.../js/renderPieChart/chart.js.clone.html | 0
.../chartjs-plugin-datalabe.min.js | 0
.../chart.js.clone.html | 0
.../template/js/renderTable.js | 0
.../Statistics/Largest notes/template.html | 0
.../Statistics/Largest notes/template/js.js | 0
.../Most cloned notes/template.html | 0
.../Most cloned notes/template/js.js | 0
.../Most edited notes/template.html | 0
.../Most edited notes/template/js.js | 0
.../Most linked notes/template.html | 0
.../Most linked notes/template/js.js | 0
.../Statistics/Note type count/template.html | 0
.../Statistics/Note type count/template/js.js | 0
.../template/js/renderPieChart.clone.html | 0
.../template/js/renderTable.js | 0
.../Scripting examples/Task manager.html | 0
.../Task manager/Create Launcher.js | 0
.../Done/Buy a board game for Alice.html | 0
.../Done/Buy a board game for Alice.jpg | Bin
.../Done/Dentist appointment.html | 0
.../Done/Get a gym membership.html | 0
.../Task manager/Implementation/CSS.css | 0
.../Implementation/attribute changed.js | 0
.../attribute changed/reconcileAssignments.js | 0
.../Implementation/createNewTask.js | 0
.../Implementation/task template.html | 0
.../Task manager/Locations/gym.html | 0
.../Locations/mall/Buy some book for Bob.html | 0
.../Maybe Black Swan.html | 0
.../Locations/tesco/Buy milk.html | 0
.../work/Send invites for christmas par.html | 0
.../Task manager/TODO/Buy milk.clone.html | 0
.../TODO/Buy some book for Bob.clone.html | 0
...end invites for christmas party.clone.html | 0
.../Buy some book for Bob.clone.html | 0
.../Tags/groceries/Buy milk.clone.html | 0
.../Task manager/Tags/health.html | 0
.../Tags/shopping/Buy milk.clone.html | 0
.../shopping/Buy some book for Bob.clone.html | 0
.../Weight Tracker/Implementation.html | 0
.../Weight Tracker/Implementation/JS code.js | 0
.../Implementation/JS code/chart.js | 0
.../Scripting examples/Word count widget.js | 0
.../demo/root/Trilium Demo/Steel Blue.css | 0
.../Steel Blue/eb-garamond-v9-latin-reg.woff2 | Bin
.../Steel Blue/raleway-v12-latin-regula.woff2 | Bin
.../demo/root/Trilium Demo/Tech.html | 0
.../Tech/Linux/Bash scripting.html | 0
.../Bash scripting/Bash startup modes.html | 0
.../Tech/Linux/Bash scripting/While loop.html | 0
.../root/Trilium Demo/Tech/Linux/History.html | 0
.../root/Trilium Demo/Tech/Linux/Ubuntu.html | 0
.../Tech/Linux/Ubuntu/Unity shortcuts.html | 0
.../root/Trilium Demo/Tech/Node.js/Intro.html | 0
.../Trilium Demo/Tech/Node.js/Overview.html | 0
.../Tech/Node.js/Overview/History.html | 0
.../Node.js/Overview/Industry support.html | 0
.../Overview/Platform architecture.html | 0
.../Trilium Demo/Tech/Node.js/Releases.html | 0
.../Programming/Bash scripting.clone.html | 0
.../Trilium Demo/Tech/Programming/Java.html | 0
.../Security/Trusted timestamping.clone.html | 0
.../demo/root/Trilium Demo/Work/HR.html | 0
.../root/Trilium Demo/Work/Processes.html | 0
.../demo/root/Trilium Demo/Work/Projects.html | 0
.../demo/root/Trilium Demo_icon-color.svg | 0
{_regroup => apps/edit-docs}/demo/style.css | 0
apps/server/src/assets/db/demo.zip | Bin 915159 -> 914431 bytes
173 files changed, 0 insertions(+), 0 deletions(-)
rename {_regroup => apps/edit-docs}/demo/!!!meta.json (100%)
rename {_regroup => apps/edit-docs}/demo/index.html (100%)
rename {_regroup => apps/edit-docs}/demo/navigation.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Journal.dat (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Books/Book template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Books/Book template/Highlights.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Books/Reviews/The Mechanical.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Books/To read.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Formatting examples/Code blocks.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Formatting examples/Highlighting.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Formatting examples/Math.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Formatting examples/School schedule.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Inbox.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Inbox/Book to read.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Inbox/Grocery list for today.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Inbox/The Last Question.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/Epics.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Journal/Day template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Canvas.json (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Canvas_canvas-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of .json (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship_mermai.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK).txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State.txt (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State_mermaid-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mind Map.json (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Note Types/Mind Map_mindmap-export.svg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Custom request handler.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabels.min.js/chart.js.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Create Launcher.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Scripting examples/Word count widget.js (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Steel Blue.css (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Linux/History.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Node.js/Intro.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Node.js/Overview.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Node.js/Overview/History.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Node.js/Overview/Industry support.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Node.js/Releases.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Programming/Bash scripting.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Programming/Java.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Tech/Security/Trusted timestamping.clone.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Work/HR.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Work/Processes.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo/Work/Projects.html (100%)
rename {_regroup => apps/edit-docs}/demo/root/Trilium Demo_icon-color.svg (100%)
rename {_regroup => apps/edit-docs}/demo/style.css (100%)
diff --git a/_regroup/demo/!!!meta.json b/apps/edit-docs/demo/!!!meta.json
similarity index 100%
rename from _regroup/demo/!!!meta.json
rename to apps/edit-docs/demo/!!!meta.json
diff --git a/_regroup/demo/index.html b/apps/edit-docs/demo/index.html
similarity index 100%
rename from _regroup/demo/index.html
rename to apps/edit-docs/demo/index.html
diff --git a/_regroup/demo/navigation.html b/apps/edit-docs/demo/navigation.html
similarity index 100%
rename from _regroup/demo/navigation.html
rename to apps/edit-docs/demo/navigation.html
diff --git a/_regroup/demo/root/Journal.dat b/apps/edit-docs/demo/root/Journal.dat
similarity index 100%
rename from _regroup/demo/root/Journal.dat
rename to apps/edit-docs/demo/root/Journal.dat
diff --git a/_regroup/demo/root/Trilium Demo.html b/apps/edit-docs/demo/root/Trilium Demo.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo.html
rename to apps/edit-docs/demo/root/Trilium Demo.html
diff --git a/_regroup/demo/root/Trilium Demo/Books/Book template.html b/apps/edit-docs/demo/root/Trilium Demo/Books/Book template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Books/Book template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Books/Book template.html
diff --git a/_regroup/demo/root/Trilium Demo/Books/Book template/Highlights.html b/apps/edit-docs/demo/root/Trilium Demo/Books/Book template/Highlights.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Books/Book template/Highlights.html
rename to apps/edit-docs/demo/root/Trilium Demo/Books/Book template/Highlights.html
diff --git a/_regroup/demo/root/Trilium Demo/Books/Reviews/The Mechanical.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Books/Reviews/The Mechanical.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Books/Reviews/The Mechanical.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Books/Reviews/The Mechanical.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Books/To read.html b/apps/edit-docs/demo/root/Trilium Demo/Books/To read.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Books/To read.html
rename to apps/edit-docs/demo/root/Trilium Demo/Books/To read.html
diff --git a/_regroup/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html
rename to apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html
diff --git a/_regroup/demo/root/Trilium Demo/Formatting examples/Code blocks.html b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Formatting examples/Code blocks.html
rename to apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html
diff --git a/_regroup/demo/root/Trilium Demo/Formatting examples/Highlighting.html b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Highlighting.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Formatting examples/Highlighting.html
rename to apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Highlighting.html
diff --git a/_regroup/demo/root/Trilium Demo/Formatting examples/Math.html b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Math.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Formatting examples/Math.html
rename to apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Math.html
diff --git a/_regroup/demo/root/Trilium Demo/Formatting examples/School schedule.html b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/School schedule.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Formatting examples/School schedule.html
rename to apps/edit-docs/demo/root/Trilium Demo/Formatting examples/School schedule.html
diff --git a/_regroup/demo/root/Trilium Demo/Inbox.html b/apps/edit-docs/demo/root/Trilium Demo/Inbox.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Inbox.html
rename to apps/edit-docs/demo/root/Trilium Demo/Inbox.html
diff --git a/_regroup/demo/root/Trilium Demo/Inbox/Book to read.html b/apps/edit-docs/demo/root/Trilium Demo/Inbox/Book to read.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Inbox/Book to read.html
rename to apps/edit-docs/demo/root/Trilium Demo/Inbox/Book to read.html
diff --git a/_regroup/demo/root/Trilium Demo/Inbox/Grocery list for today.html b/apps/edit-docs/demo/root/Trilium Demo/Inbox/Grocery list for today.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Inbox/Grocery list for today.html
rename to apps/edit-docs/demo/root/Trilium Demo/Inbox/Grocery list for today.html
diff --git a/_regroup/demo/root/Trilium Demo/Inbox/The Last Question.html b/apps/edit-docs/demo/root/Trilium Demo/Inbox/The Last Question.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Inbox/The Last Question.html
rename to apps/edit-docs/demo/root/Trilium Demo/Inbox/The Last Question.html
diff --git a/_regroup/demo/root/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf b/apps/edit-docs/demo/root/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf
rename to apps/edit-docs/demo/root/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf
diff --git a/_regroup/demo/root/Trilium Demo/Journal.html b/apps/edit-docs/demo/root/Trilium Demo/Journal.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/Epics.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/Epics.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html
diff --git a/_regroup/demo/root/Trilium Demo/Journal/Day template.html b/apps/edit-docs/demo/root/Trilium Demo/Journal/Day template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Journal/Day template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Journal/Day template.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Canvas.json b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Canvas.json
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Canvas.json
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Canvas.json
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Canvas_canvas-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Canvas_canvas-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Canvas_canvas-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Canvas_canvas-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of .json b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of .json
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of .json
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of .json
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Bar chart_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/C4_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Class_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship_mermai.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship_mermai.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship_mermai.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Entity Relationship_mermai.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK).txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK).txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK).txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK).txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Flow_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Gantt_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Git_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Journey_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Mind Map_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Pie_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/Sequence_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State.txt b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State.txt
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State.txt
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State.txt
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State_mermaid-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State_mermaid-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State_mermaid-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mermaid Diagrams/State_mermaid-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mind Map.json b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mind Map.json
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mind Map.json
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mind Map.json
diff --git a/_regroup/demo/root/Trilium Demo/Note Types/Mind Map_mindmap-export.svg b/apps/edit-docs/demo/root/Trilium Demo/Note Types/Mind Map_mindmap-export.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Note Types/Mind Map_mindmap-export.svg
rename to apps/edit-docs/demo/root/Trilium Demo/Note Types/Mind Map_mindmap-export.svg
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Custom request handler.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Custom request handler.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Custom request handler.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Custom request handler.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabels.min.js/chart.js.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabels.min.js/chart.js.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabels.min.js/chart.js.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabels.min.js/chart.js.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Create Launcher.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Create Launcher.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Create Launcher.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Create Launcher.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js
diff --git a/_regroup/demo/root/Trilium Demo/Scripting examples/Word count widget.js b/apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Word count widget.js
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Scripting examples/Word count widget.js
rename to apps/edit-docs/demo/root/Trilium Demo/Scripting examples/Word count widget.js
diff --git a/_regroup/demo/root/Trilium Demo/Steel Blue.css b/apps/edit-docs/demo/root/Trilium Demo/Steel Blue.css
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Steel Blue.css
rename to apps/edit-docs/demo/root/Trilium Demo/Steel Blue.css
diff --git a/_regroup/demo/root/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 b/apps/edit-docs/demo/root/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2
rename to apps/edit-docs/demo/root/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2
diff --git a/_regroup/demo/root/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 b/apps/edit-docs/demo/root/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2
rename to apps/edit-docs/demo/root/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2
diff --git a/_regroup/demo/root/Trilium Demo/Tech.html b/apps/edit-docs/demo/root/Trilium Demo/Tech.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Linux/History.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/History.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Linux/History.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/History.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Node.js/Intro.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Intro.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Node.js/Intro.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Intro.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Node.js/Overview.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Node.js/Overview.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Node.js/Overview/History.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview/History.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Node.js/Overview/History.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview/History.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Node.js/Overview/Industry support.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview/Industry support.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Node.js/Overview/Industry support.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview/Industry support.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Node.js/Releases.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Releases.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Node.js/Releases.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Node.js/Releases.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Programming/Bash scripting.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Programming/Bash scripting.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Programming/Bash scripting.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Programming/Bash scripting.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Programming/Java.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Programming/Java.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Programming/Java.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Programming/Java.html
diff --git a/_regroup/demo/root/Trilium Demo/Tech/Security/Trusted timestamping.clone.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Security/Trusted timestamping.clone.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Tech/Security/Trusted timestamping.clone.html
rename to apps/edit-docs/demo/root/Trilium Demo/Tech/Security/Trusted timestamping.clone.html
diff --git a/_regroup/demo/root/Trilium Demo/Work/HR.html b/apps/edit-docs/demo/root/Trilium Demo/Work/HR.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Work/HR.html
rename to apps/edit-docs/demo/root/Trilium Demo/Work/HR.html
diff --git a/_regroup/demo/root/Trilium Demo/Work/Processes.html b/apps/edit-docs/demo/root/Trilium Demo/Work/Processes.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Work/Processes.html
rename to apps/edit-docs/demo/root/Trilium Demo/Work/Processes.html
diff --git a/_regroup/demo/root/Trilium Demo/Work/Projects.html b/apps/edit-docs/demo/root/Trilium Demo/Work/Projects.html
similarity index 100%
rename from _regroup/demo/root/Trilium Demo/Work/Projects.html
rename to apps/edit-docs/demo/root/Trilium Demo/Work/Projects.html
diff --git a/_regroup/demo/root/Trilium Demo_icon-color.svg b/apps/edit-docs/demo/root/Trilium Demo_icon-color.svg
similarity index 100%
rename from _regroup/demo/root/Trilium Demo_icon-color.svg
rename to apps/edit-docs/demo/root/Trilium Demo_icon-color.svg
diff --git a/_regroup/demo/style.css b/apps/edit-docs/demo/style.css
similarity index 100%
rename from _regroup/demo/style.css
rename to apps/edit-docs/demo/style.css
diff --git a/apps/server/src/assets/db/demo.zip b/apps/server/src/assets/db/demo.zip
index b44f44fb466e5ae2af2130302b604e47eeaa3d8e..ec3f53f9157fdff36241f4940829cfb68e39071d 100644
GIT binary patch
delta 28508
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
delta 28880
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