diff --git a/.dprint.json b/.dprint.json
deleted file mode 100644
index 21e6f8585..000000000
--- a/.dprint.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "typescript": {
- "indentWidth": 4,
- "quoteStyle": "preferDouble",
- "semiColons": "prefer",
- "quoteProps": "asNeeded",
- "newLineKind": "lf",
- "lineWidth": 200,
- "trailingCommas": "never",
- "arrayPattern.spaceAround": true,
- "arrayExpression.spaceAround": true
- },
- "json": {
- },
- "markdown": {
- },
- "dockerfile": {
- },
- "malva": {
- },
- "markup": {
- },
- "yaml": {
- },
- "excludes": [
- "**/node_modules",
- "**/*-lock.json",
- "*.html",
- "*.md",
- "*.yml",
- "libraries/*",
- "docs/*",
- "src/public/app/doc_notes"
- ],
- "plugins": [
- "https://plugins.dprint.dev/typescript-0.94.0.wasm",
- "https://plugins.dprint.dev/json-0.20.0.wasm",
- "https://plugins.dprint.dev/markdown-0.18.0.wasm",
- "https://plugins.dprint.dev/dockerfile-0.3.2.wasm",
- "https://plugins.dprint.dev/g-plane/malva-v0.11.1.wasm",
- "https://plugins.dprint.dev/g-plane/markup_fmt-v0.19.0.wasm",
- "https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm"
- ]
-}
diff --git a/.gitattributes b/.gitattributes
index 73bf98eb0..c2de311c3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,4 +1,13 @@
package-lock.json linguist-generated=true
**/package-lock.json linguist-generated=true
src/public/app/doc_notes/en/User[[:space:]]Guide/** linguist-generated=true
+src/public/app/doc_notes/en/User[[:space:]]Guide/**/*.md eol=lf
+
+demo/**/*.html eol=lf
+demo/**/*.json eol=lf
+demo/**/*.svg eol=lf
+demo/**/*.txt eol=lf
+demo/**/*.js eol=lf
+demo/**/*.css eol=lf
+
libraries/** linguist-vendored
\ No newline at end of file
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 6203d87bc..75c9d0dca 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,4 +1,4 @@
# These are supported funding model platforms
-github: [zadam]
-custom: ["https://paypal.me/za4am"]
+github: [eliandoran]
+custom: ["https://paypal.me/eliandoran"]
diff --git a/.github/actions/build-electron/action.yml b/.github/actions/build-electron/action.yml
index 5ca07d519..7878db865 100644
--- a/.github/actions/build-electron/action.yml
+++ b/.github/actions/build-electron/action.yml
@@ -84,10 +84,7 @@ runs:
APPLE_ID_PASSWORD: ${{ env.APPLE_ID_PASSWORD }}
WINDOWS_SIGN_EXECUTABLE: ${{ env.WINDOWS_SIGN_EXECUTABLE }}
TRILIUM_ARTIFACT_NAME_HINT: TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}
- run: |
- npm run electron-forge:make -- \
- --arch=${{ inputs.arch }} \
- --platform=${{ inputs.forge_platform }}
+ run: npm run electron-forge:make -- --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }}
# Add DMG signing step
- name: Sign DMG
@@ -115,6 +112,16 @@ runs:
xcrun notarytool submit "$dmg_file" --apple-id "$APPLE_ID" --password "$APPLE_ID_PASSWORD" --team-id "$APPLE_TEAM_ID" --wait
# Staple the notarization ticket
xcrun stapler staple "$dmg_file"
+ else
+ echo "No DMG found to sign"
+ fi
+ echo "Using signing identity: $SIGNING_IDENTITY"
+ # Sign the DMG
+ codesign --force --sign "$SIGNING_IDENTITY" --options runtime --timestamp "$dmg_file"
+ # Notarize the DMG
+ xcrun notarytool submit "$dmg_file" --apple-id "$APPLE_ID" --password "$APPLE_ID_PASSWORD" --team-id "$APPLE_TEAM_ID" --wait
+ # Staple the notarization ticket
+ xcrun stapler staple "$dmg_file"
else
echo "No DMG found to sign"
fi
diff --git a/.github/actions/build-server/action.yml b/.github/actions/build-server/action.yml
index d296838a2..13984e2ce 100644
--- a/.github/actions/build-server/action.yml
+++ b/.github/actions/build-server/action.yml
@@ -28,4 +28,5 @@ runs:
run: |
mkdir -p upload
file=$(find dist -name '*.tar.xz' -print -quit)
- cp "$file" "upload/TriliumNextNotes-Server-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz"
+ name=${{ github.ref_name }}
+ cp "$file" "upload/TriliumNextNotes-Server-${name//\//-}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz"
diff --git a/.github/actions/report-size/action.yml b/.github/actions/report-size/action.yml
new file mode 100644
index 000000000..e6bc477ca
--- /dev/null
+++ b/.github/actions/report-size/action.yml
@@ -0,0 +1,79 @@
+name: 'Bundle size reporter'
+description: 'Post bundle size difference compared to another branch'
+inputs:
+ branch:
+ description: 'Branch to compare to'
+ required: true
+ default: 'main'
+ paths:
+ description:
+ 'Paths to json file bundle size report or folder containing bundles'
+ required: true
+ default: '/'
+ onlyDiff:
+ description: 'Report only different sizes'
+ required: false
+ default: 'false'
+ filter:
+ description: 'Regex filter based on file path'
+ required: false
+ unit:
+ description: 'Size unit'
+ required: false
+ default: 'KB'
+
+ # Comment inputs
+ comment:
+ description: 'Post comment'
+ required: false
+ default: 'true'
+ header:
+ description: 'Comment header'
+ required: false
+ default: 'Bundle size report'
+ append:
+ description: 'Append comment'
+ required: false
+ default: 'false'
+ ghToken:
+ description: 'Github token'
+ required: false
+
+runs:
+ using: 'composite'
+ steps:
+ # Checkout branch to compare to [required]
+ - name: Checkout base branch
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.branch }}
+ path: br-base
+ token: ${{ inputs.ghToken }}
+
+ # Generate the bundle size difference report [required]
+ - name: Generate report
+ id: bundleSize
+ uses: nejcm/bundle-size-reporter-action@v1.4.1
+ with:
+ paths: ${{ inputs.paths }}
+ onlyDiff: ${{ inputs.onlyDiff }}
+ filter: ${{ inputs.filter }}
+ unit: ${{ inputs.unit }}
+
+ # Post github action summary
+ - name: Post summary
+ if: ${{ steps.bundleSize.outputs.hasDifferences == 'true' }} # post only in case of changes
+ run: |
+ echo '${{ steps.bundleSize.outputs.summary }}' >> $GITHUB_STEP_SUMMARY
+ shell: bash
+
+ # Post github action comment
+ - name: Post comment
+ uses: marocchino/sticky-pull-request-comment@v2
+ if: ${{ steps.bundleSize.outputs.hasDifferences == 'true' }} # post only in case of changes
+ with:
+ number: ${{ github.event.pull_request.number }}
+ header: ${{ inputs.header }}
+ append: ${{ inputs.append }}
+ message: '${{ steps.bundleSize.outputs.summary }}'
+ GITHUB_TOKEN: ${{ inputs.ghToken }}
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 000000000..25cd18724
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,100 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL Advanced"
+
+on:
+ push:
+ branches: [ "develop" ]
+ pull_request:
+ branches: [ "develop" ]
+ schedule:
+ - cron: '20 7 * * 0'
+
+jobs:
+ analyze:
+ name: Analyze (${{ matrix.language }})
+ # Runner size impacts CodeQL analysis time. To learn more, please see:
+ # - https://gh.io/recommended-hardware-resources-for-running-codeql
+ # - https://gh.io/supported-runners-and-hardware-resources
+ # - https://gh.io/using-larger-runners (GitHub.com only)
+ # Consider using larger runners or machines with greater resources for possible analysis time improvements.
+ runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
+ permissions:
+ # required for all workflows
+ security-events: write
+
+ # required to fetch internal or private CodeQL packs
+ packages: read
+
+ # only required for workflows in private repositories
+ actions: read
+ contents: read
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - language: actions
+ build-mode: none
+ - language: javascript-typescript
+ build-mode: none
+ # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
+ # Use `c-cpp` to analyze code written in C, C++ or both
+ # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
+ # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
+ # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
+ # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
+ # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
+ # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ # Add any setup steps before running the `github/codeql-action/init` action.
+ # This includes steps like installing compilers or runtimes (`actions/setup-node`
+ # or others). This is typically only required for manual builds.
+ # - name: Setup runtime (example)
+ # uses: actions/setup-example@v1
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v3
+ with:
+ languages: ${{ matrix.language }}
+ build-mode: ${{ matrix.build-mode }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+
+ # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
+ # queries: security-extended,security-and-quality
+
+ # If the analyze step fails for one of the languages you are analyzing with
+ # "We were unable to automatically build your code", modify the matrix above
+ # to set the build mode to "manual" for that language. Then modify this step
+ # to build your code.
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
+ - if: matrix.build-mode == 'manual'
+ shell: bash
+ run: |
+ echo 'If you are using a "manual" build mode for one or more of the' \
+ 'languages you are analyzing, replace this with the commands to build' \
+ 'your code, for example:'
+ echo ' make bootstrap'
+ echo ' make release'
+ exit 1
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v3
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml
index e7bff39e9..c12db78c9 100644
--- a/.github/workflows/dev.yml
+++ b/.github/workflows/dev.yml
@@ -15,7 +15,73 @@ env:
IMAGE_NAME: ${{ github.repository_owner }}/notes
TEST_TAG: ${{ github.repository_owner }}/notes:test
+permissions:
+ pull-requests: write # for PR comments
+
jobs:
+ report-electron-size:
+ name: Report Electron size
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the repository
+ uses: actions/checkout@v4
+
+ - name: Set up node & dependencies
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "npm"
+
+ - run: npm ci
+
+ - name: Run the build
+ uses: ./.github/actions/build-electron
+ with:
+ os: linux
+ arch: x64
+ shell: bash
+ forge_platform: linux
+
+ - name: Run the Electron size report
+ uses: ./.github/actions/report-size
+ with:
+ paths: 'upload/**/*'
+ onlyDiff: 'true'
+ branch: 'develop'
+ header: 'Electron size report'
+ unit: "MB"
+ ghToken: ${{ secrets.GITHUB_TOKEN }}
+ report-server-size:
+ name: Report server size
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the repository
+ uses: actions/checkout@v4
+
+ - name: Set up node & dependencies
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "npm"
+
+ - run: npm ci
+
+ - name: Run the build
+ uses: ./.github/actions/build-server
+ with:
+ os: linux
+ arch: x64
+
+ - name: Run the server size report
+ uses: ./.github/actions/report-size
+ with:
+ paths: 'upload/**/*'
+ onlyDiff: 'true'
+ branch: 'develop'
+ header: 'Server size report'
+ unit: "MB"
+ ghToken: ${{ secrets.GITHUB_TOKEN }}
+
test_dev:
name: Test development
runs-on: ubuntu-latest
@@ -44,6 +110,10 @@ jobs:
- test_dev
steps:
- uses: actions/checkout@v4
+ - name: Install dependencies
+ run: npm ci
+ - name: Update build info
+ run: npm run chore:update-build-info
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
with:
@@ -64,6 +134,12 @@ jobs:
- name: Checkout the repository
uses: actions/checkout@v4
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Update build info
+ run: npm run chore:update-build-info
+
- name: Set IMAGE_NAME to lowercase
run: echo "IMAGE_NAME=${IMAGE_NAME,,}" >> $GITHUB_ENV
- name: Set TEST_TAG to lowercase
diff --git a/.github/workflows/main-docker.yml b/.github/workflows/main-docker.yml
index 25277d30a..755956fb1 100644
--- a/.github/workflows/main-docker.yml
+++ b/.github/workflows/main-docker.yml
@@ -131,6 +131,13 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Update build info
+ run: npm run chore:update-build-info
+
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 526d8901f..83b9c436c 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -11,6 +11,7 @@ on:
pull_request:
paths:
- .github/actions/build-electron/*
+ - forge.config.cjs
env:
GITHUB_UPLOAD_URL: https://uploads.github.com/repos/TriliumNext/Notes/releases/179589950/assets{?name,label}
GITHUB_RELEASE_ID: 179589950
@@ -82,3 +83,36 @@ jobs:
with:
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}
path: upload
+
+ nightly-server:
+ name: Deploy server nightly
+ strategy:
+ fail-fast: false
+ matrix:
+ arch: [x64, arm64]
+ include:
+ - arch: x64
+ runs-on: ubuntu-latest
+ - arch: arm64
+ runs-on: ubuntu-24.04-arm
+ runs-on: ${{ matrix.runs-on }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Run the build
+ uses: ./.github/actions/build-server
+ with:
+ os: linux
+ arch: ${{ matrix.arch }}
+
+ - name: Publish release
+ uses: softprops/action-gh-release@v2
+ if: ${{ github.event_name != 'pull_request' }}
+ with:
+ make_latest: false
+ prerelease: true
+ draft: false
+ fail_on_unmatched_files: true
+ files: upload/*.*
+ tag_name: nightly
+ name: Nightly Build
diff --git a/.github/workflows/release-winget.yml b/.github/workflows/release-winget.yml
new file mode 100644
index 000000000..27b57e19d
--- /dev/null
+++ b/.github/workflows/release-winget.yml
@@ -0,0 +1,20 @@
+name: Release to winget
+on:
+ release:
+ types: [ published ]
+ workflow_dispatch:
+ inputs:
+ release_tag:
+ description: 'Git tag to release from'
+ type: string
+ required: true
+jobs:
+ release-winget:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Publish to WinGet
+ uses: vedantmgoyal9/winget-releaser@main
+ with:
+ identifier: TriliumNext.Notes
+ token: ${{ secrets.token }}
+ release-tag: ${{ github.event.inputs.release_tag || github.event.release.tag_name }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b3f334ec8..030e8e8d8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -3,7 +3,6 @@ on:
push:
tags:
- "v*"
- workflow_dispatch:
permissions:
contents: write
concurrency:
@@ -54,14 +53,13 @@ jobs:
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
WINDOWS_SIGN_EXECUTABLE: ${{ vars.WINDOWS_SIGN_EXECUTABLE }}
- - name: Publish release
- uses: softprops/action-gh-release@v2
+ - name: Upload the artifact
+ uses: actions/upload-artifact@v4
with:
- draft: true
- fail_on_unmatched_files: true
- files: upload/*.*
+ name: release-desktop-${{ matrix.os.name }}-${{ matrix.arch }}
+ path: upload/*.*
- build_linux_server-x64:
+ build_server:
name: Build Linux Server
strategy:
fail-fast: false
@@ -82,9 +80,37 @@ jobs:
os: linux
arch: ${{ matrix.arch }}
+ - name: Upload the artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: release-server-linux-${{ matrix.arch }}
+ path: upload/*.*
+
+ publish_release:
+ name: Publish release
+ runs-on: ubuntu-latest
+ needs:
+ - make-electron
+ - build_server
+ steps:
+ - run: mkdir upload
+
+ - uses: actions/checkout@v4
+ with:
+ sparse-checkout: |
+ docs/Release Notes
+
+ - name: Download all artifacts
+ uses: actions/download-artifact@v4
+ with:
+ merge-multiple: true
+ pattern: release-*
+ path: upload
+
- name: Publish release
uses: softprops/action-gh-release@v2
with:
- draft: true
+ draft: false
+ body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md
fail_on_unmatched_files: true
files: upload/*.*
diff --git a/.gitignore b/.gitignore
index 4d04ce397..b8b091d80 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
.DS_Store
node_modules/
dist/
+upload/
build/
coverage/
src/public/app-dist/
@@ -26,6 +27,7 @@ server-package.json
.idea/shelf/
data/
data-test/
+data-demo/
tmp/
.eslintcache
@@ -42,4 +44,7 @@ data-docs/backup
data-docs/log
data-docs/session
data-docs/session_secret.txt
-data-docs/document.*
\ No newline at end of file
+data-docs/document.*
+
+# Webpack
+webpack-stats.json
\ No newline at end of file
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 1eeb900b2..8823f3cdd 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -3,6 +3,9 @@
"lokalise.i18n-ally",
"editorconfig.editorconfig",
"vitest.explorer",
- "ms-playwright.playwright"
+ "ms-playwright.playwright",
+ "tobermory.es6-string-html",
+ "dbaeumer.vscode-eslint",
+ "yzhang.markdown-all-in-one"
]
}
diff --git a/README.md b/README.md
index 428e832fa..bb6e45836 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# TriliumNext Notes
- 
+  
[English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md)
@@ -16,7 +16,7 @@ See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for q
### Migrating from Trilium?
-There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Notes instance. Just upgrade your Trilium instance to the latest version and [install TriliumNext/Notes as usual](#-installation)
+There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Notes instance. Simply [install TriliumNext/Notes](#-installation) as usual and it will use your existing database.
Versions up to and including [v0.90.4](https://github.com/TriliumNext/Notes/releases/tag/v0.90.4) are compatible with the latest zadam/trilium version of [v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later versions of TriliumNext have their sync versions incremented.
@@ -37,6 +37,7 @@ Feel free to join our official conversations. We would love to hear what feature
* Fast and easy [navigation between notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text search and [note hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* Seamless [note versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be used for note organization, querying and advanced [scripting](https://triliumnext.github.io/Docs/Wiki/scripts)
+* Direct OpenID and TOTP integration for more secure login
* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) with self-hosted sync server
* there's a [3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting)
* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes to public internet
@@ -65,17 +66,7 @@ To use TriliumNext on your desktop machine (Linux, MacOS, and Windows) you have
* Download the binary release for your platform from the [latest release page](https://github.com/TriliumNext/Notes/releases/latest), unzip the package and run the ```trilium``` executable.
* Access TriliumNext via the web interface of a server installation (see below)
* Currently only the latest versions of Chrome & Firefox are supported (and tested).
-* (Coming Soon) TriliumNext will also be provided as a Flatpak
-
-#### MacOS
-Currently when running TriliumNext/Notes on MacOS, you may get the following error:
-> Apple could not verify "TriliumNext Notes" is free of malware and may harm your Mac or compromise your privacy.
-
-You will need to run the command on your shell to resolve the error (documented [here](https://github.com/TriliumNext/Notes/issues/329#issuecomment-2287164137)):
-
-```bash
-xattr -c "/path/to/Trilium Next.app"
-```
+* TriliumNext is also provided as a Flatpak, but not yet published on FlatHub.
### Mobile
@@ -106,10 +97,11 @@ npm install
npm run server:start
```
+For more details, see the [development docs](https://github.com/TriliumNext/Notes/blob/develop/docs/Developer%20Guide/Developer%20Guide/Building%20and%20deployment/Running%20a%20development%20build.md).
+
### Documentation
-We are currently transitioning to a new documentation mechanism.
-Meanwhile you can still view the [archived Docs repository](https://github.com/TriliumNext/Docs).
+See the [documentation guide](https://github.com/TriliumNext/Notes/blob/develop/docs/Developer%20Guide/Developer%20Guide/Documentation.md) for details.
## 👏 Shoutouts
diff --git a/bin/build-server.sh b/bin/build-server.sh
index e89c72d5a..93102737c 100755
--- a/bin/build-server.sh
+++ b/bin/build-server.sh
@@ -52,7 +52,7 @@ rm -r $BUILD_DIR/node/lib/node_modules/{npm,corepack} \
$BUILD_DIR/node_modules/electron* \
$BUILD_DIR/electron*.{js,map}
-printf "#!/bin/sh\n./node/bin/node src/main" > $BUILD_DIR/trilium.sh
+printf "#!/bin/sh\n./node/bin/node src/main\n" > $BUILD_DIR/trilium.sh
chmod 755 $BUILD_DIR/trilium.sh
# TriliumNextTODO: is this still required? If yes → move to copy-dist/copy-trilium
diff --git a/bin/docs/.env.example b/bin/docs/.env.example
deleted file mode 100644
index 03006fb86..000000000
--- a/bin/docs/.env.example
+++ /dev/null
@@ -1,3 +0,0 @@
-SHARE_PROTOCOL=http
-SHARE_HOST=notes.johnsmith.me
-ROOT_NOTE_ID=4yYHqKbLovVX
\ No newline at end of file
diff --git a/bin/docs/.gitignore b/bin/docs/.gitignore
deleted file mode 100644
index 5ad213baa..000000000
--- a/bin/docs/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-output
-.env
\ No newline at end of file
diff --git a/bin/docs/assets/v0.63.6/app-dist/share.js b/bin/docs/assets/v0.63.6/app-dist/share.js
deleted file mode 100644
index 3c3282497..000000000
--- a/bin/docs/assets/v0.63.6/app-dist/share.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Fetch note with given ID from backend
- *
- * @param noteId of the given note to be fetched. If false, fetches current note.
- */
-async function fetchNote(noteId = null) {
- if (!noteId) {
- noteId = document.body.getAttribute("data-note-id");
- }
-
- const resp = await fetch(`api/notes/${noteId}`);
-
- return await resp.json();
-}
-
-document.addEventListener(
- "DOMContentLoaded",
- () => {
- const toggleMenuButton = document.getElementById("toggleMenuButton");
- const layout = document.getElementById("layout");
-
- if (toggleMenuButton && layout) {
- toggleMenuButton.addEventListener("click", () => layout.classList.toggle("showMenu"));
- }
- },
- false
-);
diff --git a/bin/docs/assets/v0.63.6/libraries/ckeditor/ckeditor-content.css b/bin/docs/assets/v0.63.6/libraries/ckeditor/ckeditor-content.css
deleted file mode 100644
index 41d0ab466..000000000
--- a/bin/docs/assets/v0.63.6/libraries/ckeditor/ckeditor-content.css
+++ /dev/null
@@ -1,554 +0,0 @@
-/* !!!!!! TRILIUM CUSTOM CHANGES !!!!!! */
-
-.printed-content .ck-widget__selection-handle,
-.printed-content .ck-widget__type-around {
- /* gets rid of triangles: https://github.com/zadam/trilium/issues/1129 */
- display: none;
-}
-
-/*
- * CKEditor 5 (v41.0.0) content styles.
- * Generated on Fri, 26 Jan 2024 10:23:49 GMT.
- * For more information, check out https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/content-styles.html
- */
-
-:root {
- --ck-color-image-caption-background: hsl(0, 0%, 97%);
- --ck-color-image-caption-text: hsl(0, 0%, 20%);
- --ck-color-mention-background: hsla(341, 100%, 30%, 0.1);
- --ck-color-mention-text: hsl(341, 100%, 30%);
- --ck-color-selector-caption-background: hsl(0, 0%, 97%);
- --ck-color-selector-caption-text: hsl(0, 0%, 20%);
- --ck-highlight-marker-blue: hsl(201, 97%, 72%);
- --ck-highlight-marker-green: hsl(120, 93%, 68%);
- --ck-highlight-marker-pink: hsl(345, 96%, 73%);
- --ck-highlight-marker-yellow: hsl(60, 97%, 73%);
- --ck-highlight-pen-green: hsl(112, 100%, 27%);
- --ck-highlight-pen-red: hsl(0, 85%, 49%);
- --ck-image-style-spacing: 1.5em;
- --ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);
- --ck-todo-list-checkmark-size: 16px;
-}
-
-/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */
-.ck-content .table .ck-table-resized {
- table-layout: fixed;
-}
-/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */
-.ck-content .table table {
- overflow: hidden;
-}
-/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */
-.ck-content .table td,
-.ck-content .table th {
- overflow-wrap: break-word;
- position: relative;
-}
-/* @ckeditor/ckeditor5-table/theme/table.css */
-.ck-content .table {
- margin: 0.9em auto;
- display: table;
-}
-/* @ckeditor/ckeditor5-table/theme/table.css */
-.ck-content .table table {
- border-collapse: collapse;
- border-spacing: 0;
- width: 100%;
- height: 100%;
- border: 1px double hsl(0, 0%, 70%);
-}
-/* @ckeditor/ckeditor5-table/theme/table.css */
-.ck-content .table table td,
-.ck-content .table table th {
- min-width: 2em;
- padding: 0.4em;
- border: 1px solid hsl(0, 0%, 75%);
-}
-/* @ckeditor/ckeditor5-table/theme/table.css */
-.ck-content .table table th {
- font-weight: bold;
- background: hsla(0, 0%, 0%, 5%);
-}
-/* @ckeditor/ckeditor5-table/theme/table.css */
-.ck-content[dir="rtl"] .table th {
- text-align: right;
-}
-/* @ckeditor/ckeditor5-table/theme/table.css */
-.ck-content[dir="ltr"] .table th {
- text-align: left;
-}
-/* @ckeditor/ckeditor5-table/theme/tablecaption.css */
-.ck-content .table > figcaption {
- display: table-caption;
- caption-side: top;
- word-break: break-word;
- text-align: center;
- color: var(--ck-color-selector-caption-text);
- background-color: var(--ck-color-selector-caption-background);
- padding: 0.6em;
- font-size: 0.75em;
- outline-offset: -1px;
-}
-/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
-.ck-content .page-break {
- position: relative;
- clear: both;
- padding: 5px 0;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
-.ck-content .page-break::after {
- content: "";
- position: absolute;
- border-bottom: 2px dashed hsl(0, 0%, 77%);
- width: 100%;
-}
-/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
-.ck-content .page-break__label {
- position: relative;
- z-index: 1;
- padding: 0.3em 0.6em;
- display: block;
- text-transform: uppercase;
- border: 1px solid hsl(0, 0%, 77%);
- border-radius: 2px;
- font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;
- font-size: 0.75em;
- font-weight: bold;
- color: hsl(0, 0%, 20%);
- background: hsl(0, 0%, 100%);
- box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-/* @ckeditor/ckeditor5-media-embed/theme/mediaembed.css */
-.ck-content .media {
- clear: both;
- margin: 0.9em 0;
- display: block;
- min-width: 15em;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list {
- list-style: none;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list li {
- position: relative;
- margin-bottom: 5px;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list li .todo-list {
- margin-top: 5px;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input {
- -webkit-appearance: none;
- display: inline-block;
- position: relative;
- width: var(--ck-todo-list-checkmark-size);
- height: var(--ck-todo-list-checkmark-size);
- vertical-align: middle;
- border: 0;
- left: -25px;
- margin-right: -15px;
- right: 0;
- margin-left: 0;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content[dir="rtl"] .todo-list .todo-list__label > input {
- left: 0;
- margin-right: 0;
- right: -25px;
- margin-left: -15px;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input::before {
- display: block;
- position: absolute;
- box-sizing: border-box;
- content: "";
- width: 100%;
- height: 100%;
- border: 1px solid hsl(0, 0%, 20%);
- border-radius: 2px;
- transition: 250ms ease-in-out box-shadow;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input::after {
- display: block;
- position: absolute;
- box-sizing: content-box;
- pointer-events: none;
- content: "";
- left: calc(var(--ck-todo-list-checkmark-size) / 3);
- top: calc(var(--ck-todo-list-checkmark-size) / 5.3);
- width: calc(var(--ck-todo-list-checkmark-size) / 5.3);
- height: calc(var(--ck-todo-list-checkmark-size) / 2.6);
- border-style: solid;
- border-color: transparent;
- border-width: 0 calc(var(--ck-todo-list-checkmark-size) / 8) calc(var(--ck-todo-list-checkmark-size) / 8) 0;
- transform: rotate(45deg);
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input[checked]::before {
- background: hsl(126, 64%, 41%);
- border-color: hsl(126, 64%, 41%);
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input[checked]::after {
- border-color: hsl(0, 0%, 100%);
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label .todo-list__label__description {
- vertical-align: middle;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type="checkbox"] {
- position: absolute;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label > input,
-.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input {
- cursor: pointer;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label > input:hover::before,
-.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input:hover::before {
- box-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1);
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input {
- -webkit-appearance: none;
- display: inline-block;
- position: relative;
- width: var(--ck-todo-list-checkmark-size);
- height: var(--ck-todo-list-checkmark-size);
- vertical-align: middle;
- border: 0;
- left: -25px;
- margin-right: -15px;
- right: 0;
- margin-left: 0;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content[dir="rtl"] .todo-list .todo-list__label > span[contenteditable="false"] > input {
- left: 0;
- margin-right: 0;
- right: -25px;
- margin-left: -15px;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input::before {
- display: block;
- position: absolute;
- box-sizing: border-box;
- content: "";
- width: 100%;
- height: 100%;
- border: 1px solid hsl(0, 0%, 20%);
- border-radius: 2px;
- transition: 250ms ease-in-out box-shadow;
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input::after {
- display: block;
- position: absolute;
- box-sizing: content-box;
- pointer-events: none;
- content: "";
- left: calc(var(--ck-todo-list-checkmark-size) / 3);
- top: calc(var(--ck-todo-list-checkmark-size) / 5.3);
- width: calc(var(--ck-todo-list-checkmark-size) / 5.3);
- height: calc(var(--ck-todo-list-checkmark-size) / 2.6);
- border-style: solid;
- border-color: transparent;
- border-width: 0 calc(var(--ck-todo-list-checkmark-size) / 8) calc(var(--ck-todo-list-checkmark-size) / 8) 0;
- transform: rotate(45deg);
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input[checked]::before {
- background: hsl(126, 64%, 41%);
- border-color: hsl(126, 64%, 41%);
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input[checked]::after {
- border-color: hsl(0, 0%, 100%);
-}
-/* @ckeditor/ckeditor5-list/theme/todolist.css */
-.ck-editor__editable.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type="checkbox"] {
- position: absolute;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ol {
- list-style-type: decimal;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ol ol {
- list-style-type: lower-latin;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ol ol ol {
- list-style-type: lower-roman;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ol ol ol ol {
- list-style-type: upper-latin;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ol ol ol ol ol {
- list-style-type: upper-roman;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ul {
- list-style-type: disc;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ul ul {
- list-style-type: circle;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ul ul ul {
- list-style-type: square;
-}
-/* @ckeditor/ckeditor5-list/theme/list.css */
-.ck-content ul ul ul ul {
- list-style-type: square;
-}
-/* @ckeditor/ckeditor5-image/theme/image.css */
-.ck-content .image {
- display: table;
- clear: both;
- text-align: center;
- margin: 0.9em auto;
- min-width: 50px;
-}
-/* @ckeditor/ckeditor5-image/theme/image.css */
-.ck-content .image img {
- display: block;
- margin: 0 auto;
- max-width: 100%;
- min-width: 100%;
- height: auto;
-}
-/* @ckeditor/ckeditor5-image/theme/image.css */
-.ck-content .image-inline {
- /*
- * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).;
- * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root.
- * This strange behavior does not happen with inline-flex.
- */
- display: inline-flex;
- max-width: 100%;
- align-items: flex-start;
-}
-/* @ckeditor/ckeditor5-image/theme/image.css */
-.ck-content .image-inline picture {
- display: flex;
-}
-/* @ckeditor/ckeditor5-image/theme/image.css */
-.ck-content .image-inline picture,
-.ck-content .image-inline img {
- flex-grow: 1;
- flex-shrink: 1;
- max-width: 100%;
-}
-/* @ckeditor/ckeditor5-image/theme/imageresize.css */
-.ck-content img.image_resized {
- height: auto;
-}
-/* @ckeditor/ckeditor5-image/theme/imageresize.css */
-.ck-content .image.image_resized {
- max-width: 100%;
- display: block;
- box-sizing: border-box;
-}
-/* @ckeditor/ckeditor5-image/theme/imageresize.css */
-.ck-content .image.image_resized img {
- width: 100%;
-}
-/* @ckeditor/ckeditor5-image/theme/imageresize.css */
-.ck-content .image.image_resized > figcaption {
- display: block;
-}
-/* @ckeditor/ckeditor5-image/theme/imagecaption.css */
-.ck-content .image > figcaption {
- display: table-caption;
- caption-side: bottom;
- word-break: break-word;
- color: var(--ck-color-image-caption-text);
- background-color: var(--ck-color-image-caption-background);
- padding: 0.6em;
- font-size: 0.75em;
- outline-offset: -1px;
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-block-align-left,
-.ck-content .image-style-block-align-right {
- max-width: calc(100% - var(--ck-image-style-spacing));
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-align-left,
-.ck-content .image-style-align-right {
- clear: none;
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-side {
- float: right;
- margin-left: var(--ck-image-style-spacing);
- max-width: 50%;
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-align-left {
- float: left;
- margin-right: var(--ck-image-style-spacing);
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-align-center {
- margin-left: auto;
- margin-right: auto;
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-align-right {
- float: right;
- margin-left: var(--ck-image-style-spacing);
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-block-align-right {
- margin-right: 0;
- margin-left: auto;
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-block-align-left {
- margin-left: 0;
- margin-right: auto;
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content p + .image-style-align-left,
-.ck-content p + .image-style-align-right,
-.ck-content p + .image-style-side {
- margin-top: 0;
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-inline.image-style-align-left,
-.ck-content .image-inline.image-style-align-right {
- margin-top: var(--ck-inline-image-style-spacing);
- margin-bottom: var(--ck-inline-image-style-spacing);
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-inline.image-style-align-left {
- margin-right: var(--ck-inline-image-style-spacing);
-}
-/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-inline.image-style-align-right {
- margin-left: var(--ck-inline-image-style-spacing);
-}
-/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
-.ck-content .marker-yellow {
- background-color: var(--ck-highlight-marker-yellow);
-}
-/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
-.ck-content .marker-green {
- background-color: var(--ck-highlight-marker-green);
-}
-/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
-.ck-content .marker-pink {
- background-color: var(--ck-highlight-marker-pink);
-}
-/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
-.ck-content .marker-blue {
- background-color: var(--ck-highlight-marker-blue);
-}
-/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
-.ck-content .pen-red {
- color: var(--ck-highlight-pen-red);
- background-color: transparent;
-}
-/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
-.ck-content .pen-green {
- color: var(--ck-highlight-pen-green);
- background-color: transparent;
-}
-/* @ckeditor/ckeditor5-block-quote/theme/blockquote.css */
-.ck-content blockquote {
- overflow: hidden;
- padding-right: 1.5em;
- padding-left: 1.5em;
- margin-left: 0;
- margin-right: 0;
- font-style: italic;
- border-left: solid 5px hsl(0, 0%, 80%);
-}
-/* @ckeditor/ckeditor5-block-quote/theme/blockquote.css */
-.ck-content[dir="rtl"] blockquote {
- border-left: 0;
- border-right: solid 5px hsl(0, 0%, 80%);
-}
-/* @ckeditor/ckeditor5-basic-styles/theme/code.css */
-.ck-content code {
- background-color: hsla(0, 0%, 78%, 0.3);
- padding: 0.15em;
- border-radius: 2px;
-}
-/* @ckeditor/ckeditor5-font/theme/fontsize.css */
-.ck-content .text-tiny {
- font-size: 0.7em;
-}
-/* @ckeditor/ckeditor5-font/theme/fontsize.css */
-.ck-content .text-small {
- font-size: 0.85em;
-}
-/* @ckeditor/ckeditor5-font/theme/fontsize.css */
-.ck-content .text-big {
- font-size: 1.4em;
-}
-/* @ckeditor/ckeditor5-font/theme/fontsize.css */
-.ck-content .text-huge {
- font-size: 1.8em;
-}
-/* @ckeditor/ckeditor5-mention/theme/mention.css */
-.ck-content .mention {
- background: var(--ck-color-mention-background);
- color: var(--ck-color-mention-text);
-}
-/* @ckeditor/ckeditor5-horizontal-line/theme/horizontalline.css */
-.ck-content hr {
- margin: 15px 0;
- height: 4px;
- background: hsl(0, 0%, 87%);
- border: 0;
-}
-/* @ckeditor/ckeditor5-code-block/theme/codeblock.css */
-.ck-content pre {
- padding: 1em;
- color: hsl(0, 0%, 20.8%);
- background: hsla(0, 0%, 78%, 0.3);
- border: 1px solid hsl(0, 0%, 77%);
- border-radius: 2px;
- text-align: left;
- direction: ltr;
- tab-size: 4;
- white-space: pre-wrap;
- font-style: normal;
- min-width: 200px;
-}
-/* @ckeditor/ckeditor5-code-block/theme/codeblock.css */
-.ck-content pre code {
- background: unset;
- padding: 0;
- border-radius: 0;
-}
-@media print {
- /* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
- .ck-content .page-break {
- padding: 0;
- }
- /* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
- .ck-content .page-break::after {
- display: none;
- }
-}
diff --git a/bin/docs/assets/v0.63.6/libraries/normalize.min.css b/bin/docs/assets/v0.63.6/libraries/normalize.min.css
deleted file mode 100644
index 3d24d023d..000000000
--- a/bin/docs/assets/v0.63.6/libraries/normalize.min.css
+++ /dev/null
@@ -1,148 +0,0 @@
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
-html {
- line-height: 1.15;
- -webkit-text-size-adjust: 100%;
-}
-body {
- margin: 0;
-}
-main {
- display: block;
-}
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-hr {
- box-sizing: content-box;
- height: 0;
- overflow: visible;
-}
-pre {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-a {
- background-color: transparent;
-}
-abbr[title] {
- border-bottom: none;
- text-decoration: underline;
- text-decoration: underline dotted;
-}
-b,
-strong {
- font-weight: bolder;
-}
-code,
-kbd,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-small {
- font-size: 80%;
-}
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-sub {
- bottom: -0.25em;
-}
-sup {
- top: -0.5em;
-}
-img {
- border-style: none;
-}
-button,
-input,
-optgroup,
-select,
-textarea {
- font-family: inherit;
- font-size: 100%;
- line-height: 1.15;
- margin: 0;
-}
-button,
-input {
- overflow: visible;
-}
-button,
-select {
- text-transform: none;
-}
-[type="button"],
-[type="reset"],
-[type="submit"],
-button {
- -webkit-appearance: button;
-}
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner,
-button::-moz-focus-inner {
- border-style: none;
- padding: 0;
-}
-[type="button"]:-moz-focusring,
-[type="reset"]:-moz-focusring,
-[type="submit"]:-moz-focusring,
-button:-moz-focusring {
- outline: 1px dotted ButtonText;
-}
-fieldset {
- padding: 0.35em 0.75em 0.625em;
-}
-legend {
- box-sizing: border-box;
- color: inherit;
- display: table;
- max-width: 100%;
- padding: 0;
- white-space: normal;
-}
-progress {
- vertical-align: baseline;
-}
-textarea {
- overflow: auto;
-}
-[type="checkbox"],
-[type="radio"] {
- box-sizing: border-box;
- padding: 0;
-}
-[type="number"]::-webkit-inner-spin-button,
-[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-[type="search"] {
- -webkit-appearance: textfield;
- outline-offset: -2px;
-}
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-::-webkit-file-upload-button {
- -webkit-appearance: button;
- font: inherit;
-}
-details {
- display: block;
-}
-summary {
- display: list-item;
-}
-template {
- display: none;
-}
-[hidden] {
- display: none;
-}
-/*# sourceMappingURL=normalize.min.css.map */
diff --git a/bin/docs/assets/v0.63.6/stylesheets/share.css b/bin/docs/assets/v0.63.6/stylesheets/share.css
deleted file mode 100644
index 457898d8f..000000000
--- a/bin/docs/assets/v0.63.6/stylesheets/share.css
+++ /dev/null
@@ -1,165 +0,0 @@
-body {
- font-family: "Lucida Grande", "Lucida Sans Unicode", arial, sans-serif;
- line-height: 1.5;
-}
-
-#layout {
- max-width: 1200px;
- margin: 0 auto;
- display: flex;
- flex-direction: row-reverse;
-}
-
-#menu {
- padding: 25px;
- flex-basis: 0;
- flex-grow: 1;
- overflow: auto;
-}
-
-#menu p {
- margin: 0;
-}
-
-#menu > p {
- font-weight: bold;
- font-size: 110%;
-}
-
-#menu ul {
- padding-left: 20px;
-}
-
-#main {
- flex-basis: 0;
- flex-grow: 3;
- overflow: auto;
- padding: 10px 20px 20px 20px;
-}
-
-#parentLink {
- float: right;
- margin-top: 20px;
-}
-
-#title {
- margin: 0;
- padding-top: 10px;
-}
-
-img {
- max-width: 100%;
-}
-
-pre {
- white-space: pre-wrap;
- word-wrap: anywhere;
-}
-
-iframe.pdf-view {
- width: 100%;
- height: 800px;
-}
-
-#toggleMenuButton {
- display: none;
- position: fixed;
- top: 8px;
- left: 5px;
- width: 1.4em;
- border-radius: 5px;
- border: 1px solid #aaa;
- font-size: 2rem;
- z-index: 10;
- height: auto;
- color: black;
- cursor: pointer;
-}
-
-#childLinks.grid ul {
- list-style-type: none;
- display: flex;
- flex-wrap: wrap;
- padding: 0;
-}
-
-#childLinks.grid ul li {
- width: 180px;
- height: 140px;
- padding: 10px;
-}
-
-#childLinks.grid ul li a {
- display: flex;
- flex-direction: column;
- height: 100%;
- width: 100%;
- border: 1px solid #ddd;
- border-radius: 5px;
- justify-content: center;
- align-content: center;
- text-align: center;
- font-size: large;
-}
-
-#childLinks.grid ul li a:hover {
- background: #eee;
-}
-
-#childLinks.list ul {
- list-style-type: none;
- display: inline-flex;
- flex-wrap: wrap;
- padding: 0;
- margin-top: 5px;
-}
-
-#childLinks.list ul li {
- margin-right: 20px;
-}
-
-#noteClippedFrom {
- padding: 10px 0 10px 0;
- margin: 20px 0 20px 0;
- color: #666;
- border: 1px solid #ddd;
- border-left: 0;
- border-right: 0;
-}
-
-#toggleMenuButton::after {
- position: relative;
- top: -2px;
- left: 1px;
-}
-
-@media (max-width: 48em) {
- #layout.showMenu #menu {
- display: block;
- margin-top: 40px;
- }
-
- #toggleMenuButton {
- display: block;
- }
-
- #layout.showMenu #main {
- display: none;
- }
-
- #title {
- padding-left: 60px;
- }
-
- #layout.showMenu #toggleMenuButton::after {
- content: "«";
- }
-
- #toggleMenuButton::after {
- content: "»";
- }
-
- #menu {
- display: none;
- }
-}
diff --git a/bin/docs/index.template.html b/bin/docs/index.template.html
deleted file mode 100644
index b2580cb88..000000000
--- a/bin/docs/index.template.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/bin/docs/prepare.sh b/bin/docs/prepare.sh
deleted file mode 100755
index 35e761b6d..000000000
--- a/bin/docs/prepare.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env bash
-
-script_dir=$(realpath $(dirname $0))
-
-cd "$script_dir"
-
-env_file="$script_dir/.env"
-
-if [ ! -f "$env_file" ]; then
- echo "Missing .env file, cannot proceed."
- exit 1
-fi
-
-output_dir="$script_dir/../../docs"
-mkdir -p "$output_dir"
-rm -f "$output_dir"/*
-rm -rf "$output_dir"/{assets,share}
-
-source "$env_file"
-
-# Download everything in output/notes.example.com/share/...
-share_url="$SHARE_PROTOCOL://$SHARE_HOST/share/$ROOT_NOTE_ID"
-wget -rpEk -e robots=off "$share_url" -P "$output_dir"
-if [ $? -ne 0 ]; then
- echo -e \\nDownloading failed, make sure you are using the real wget package and not the busybox one.
- exit 1
-fi
-
-# Get rid of the domain in the output folder
-mv "$output_dir/$SHARE_HOST"/* "$output_dir/"
-rmdir "$output_dir/$SHARE_HOST"
-
-# Create home page with redirect
-index_dest_path="$output_dir/index.html"
-cp index.template.html "$index_dest_path"
-sed -i "s/{{ROOT_NOTE_ID}}/$ROOT_NOTE_ID/g" "$index_dest_path"
-
-# Rewrite links to get rid of the share folder
-sed -i "s/ {
const existingBlobIds = new Set();
- for (const noteId of sql.getColumn(`SELECT noteId FROM note_contents`)) {
- const row = sql.getRow(`SELECT noteId, content, dateModified, utcDateModified FROM note_contents WHERE noteId = ?`, [noteId]);
+ for (const noteId of sql.getColumn(/*sql*/`SELECT noteId FROM note_contents`)) {
+ const row = sql.getRow(/*sql*/`SELECT noteId, content, dateModified, utcDateModified FROM note_contents WHERE noteId = ?`, [noteId]);
const blobId = utils.hashedBlobId(row.content);
if (!existingBlobIds.has(blobId)) {
@@ -40,8 +40,8 @@ export default () => {
sql.execute("UPDATE notes SET blobId = ? WHERE noteId = ?", [blobId, row.noteId]);
}
- for (const noteRevisionId of sql.getColumn(`SELECT noteRevisionId FROM note_revision_contents`)) {
- const row = sql.getRow(`SELECT noteRevisionId, content, utcDateModified FROM note_revision_contents WHERE noteRevisionId = ?`, [noteRevisionId]);
+ for (const noteRevisionId of sql.getColumn(/*sql*/`SELECT noteRevisionId FROM note_revision_contents`)) {
+ const row = sql.getRow(/*sql*/`SELECT noteRevisionId, content, utcDateModified FROM note_revision_contents WHERE noteRevisionId = ?`, [noteRevisionId]);
const blobId = utils.hashedBlobId(row.content);
if (!existingBlobIds.has(blobId)) {
diff --git a/db/migrations/0220__migrate_images_to_attachments.ts b/db/migrations/0220__migrate_images_to_attachments.ts
index 53eac5958..f54f4a956 100644
--- a/db/migrations/0220__migrate_images_to_attachments.ts
+++ b/db/migrations/0220__migrate_images_to_attachments.ts
@@ -7,7 +7,7 @@ import sql from "../../src/services/sql";
export default () => {
cls.init(() => {
// emergency disabling of image compression since it appears to make problems in migration to 0.61
- sql.execute(`UPDATE options SET value = 'false' WHERE name = 'compressImages'`);
+ sql.execute(/*sql*/`UPDATE options SET value = 'false' WHERE name = 'compressImages'`);
becca_loader.load();
diff --git a/db/migrations/0229__add_oauth_user_data_table.sql b/db/migrations/0229__add_oauth_user_data_table.sql
new file mode 100644
index 000000000..ea2db4ef9
--- /dev/null
+++ b/db/migrations/0229__add_oauth_user_data_table.sql
@@ -0,0 +1,14 @@
+-- Add the oauth user data table
+CREATE TABLE IF NOT EXISTS "user_data"
+(
+ tmpID INT,
+ username TEXT,
+ email TEXT,
+ userIDEncryptedDataKey TEXT,
+ userIDVerificationHash TEXT,
+ salt TEXT,
+ derivedKey TEXT,
+ isSetup TEXT DEFAULT "false",
+ UNIQUE (tmpID),
+ PRIMARY KEY (tmpID)
+);
\ No newline at end of file
diff --git a/db/migrations/0230__vector_embeddings.sql b/db/migrations/0230__vector_embeddings.sql
new file mode 100644
index 000000000..45f14fddf
--- /dev/null
+++ b/db/migrations/0230__vector_embeddings.sql
@@ -0,0 +1,46 @@
+-- Add tables for vector embeddings storage and management
+-- This migration adds embedding support to the main document.db database
+
+-- Store embeddings for notes
+CREATE TABLE IF NOT EXISTS "note_embeddings" (
+ "embedId" TEXT NOT NULL PRIMARY KEY,
+ "noteId" TEXT NOT NULL,
+ "providerId" TEXT NOT NULL,
+ "modelId" TEXT NOT NULL,
+ "dimension" INTEGER NOT NULL,
+ "embedding" BLOB NOT NULL,
+ "version" INTEGER NOT NULL DEFAULT 1,
+ "dateCreated" TEXT NOT NULL,
+ "utcDateCreated" TEXT NOT NULL,
+ "dateModified" TEXT NOT NULL,
+ "utcDateModified" TEXT NOT NULL
+);
+
+CREATE INDEX "IDX_note_embeddings_noteId" ON "note_embeddings" ("noteId");
+CREATE INDEX "IDX_note_embeddings_providerId_modelId" ON "note_embeddings" ("providerId", "modelId");
+
+-- Table to track which notes need embedding updates
+CREATE TABLE IF NOT EXISTS "embedding_queue" (
+ "noteId" TEXT NOT NULL PRIMARY KEY,
+ "operation" TEXT NOT NULL, -- CREATE, UPDATE, DELETE
+ "dateQueued" TEXT NOT NULL,
+ "utcDateQueued" TEXT NOT NULL,
+ "priority" INTEGER NOT NULL DEFAULT 0,
+ "attempts" INTEGER NOT NULL DEFAULT 0,
+ "lastAttempt" TEXT NULL,
+ "error" TEXT NULL,
+ "failed" INTEGER NOT NULL DEFAULT 0,
+ "isProcessing" INTEGER NOT NULL DEFAULT 0
+);
+
+-- Table to store embedding provider configurations
+CREATE TABLE IF NOT EXISTS "embedding_providers" (
+ "providerId" TEXT NOT NULL PRIMARY KEY,
+ "name" TEXT NOT NULL,
+ "priority" INTEGER NOT NULL DEFAULT 0,
+ "config" TEXT NOT NULL, -- JSON config object
+ "dateCreated" TEXT NOT NULL,
+ "utcDateCreated" TEXT NOT NULL,
+ "dateModified" TEXT NOT NULL,
+ "utcDateModified" TEXT NOT NULL
+);
\ No newline at end of file
diff --git a/db/schema.sql b/db/schema.sql
index 1b4c46321..29b749d89 100644
--- a/db/schema.sql
+++ b/db/schema.sql
@@ -126,9 +126,64 @@ CREATE TABLE IF NOT EXISTS "attachments"
utcDateScheduledForErasureSince TEXT DEFAULT NULL,
isDeleted INT not null,
deleteId TEXT DEFAULT NULL);
+CREATE TABLE IF NOT EXISTS "user_data"
+(
+ tmpID INT,
+ username TEXT,
+ email TEXT,
+ userIDEncryptedDataKey TEXT,
+ userIDVerificationHash TEXT,
+ salt TEXT,
+ derivedKey TEXT,
+ isSetup TEXT DEFAULT "false",
+ UNIQUE (tmpID),
+ PRIMARY KEY (tmpID)
+);
CREATE INDEX IDX_attachments_ownerId_role
on attachments (ownerId, role);
CREATE INDEX IDX_notes_blobId on notes (blobId);
CREATE INDEX IDX_revisions_blobId on revisions (blobId);
CREATE INDEX IDX_attachments_blobId on attachments (blobId);
+
+CREATE TABLE IF NOT EXISTS "note_embeddings" (
+ "embedId" TEXT NOT NULL PRIMARY KEY,
+ "noteId" TEXT NOT NULL,
+ "providerId" TEXT NOT NULL,
+ "modelId" TEXT NOT NULL,
+ "dimension" INTEGER NOT NULL,
+ "embedding" BLOB NOT NULL,
+ "version" INTEGER NOT NULL DEFAULT 1,
+ "dateCreated" TEXT NOT NULL,
+ "utcDateCreated" TEXT NOT NULL,
+ "dateModified" TEXT NOT NULL,
+ "utcDateModified" TEXT NOT NULL
+);
+
+CREATE INDEX "IDX_note_embeddings_noteId" ON "note_embeddings" ("noteId");
+CREATE INDEX "IDX_note_embeddings_providerId_modelId" ON "note_embeddings" ("providerId", "modelId");
+
+CREATE TABLE IF NOT EXISTS "embedding_queue" (
+ "noteId" TEXT NOT NULL PRIMARY KEY,
+ "operation" TEXT NOT NULL,
+ "dateQueued" TEXT NOT NULL,
+ "utcDateQueued" TEXT NOT NULL,
+ "priority" INTEGER NOT NULL DEFAULT 0,
+ "attempts" INTEGER NOT NULL DEFAULT 0,
+ "lastAttempt" TEXT NULL,
+ "error" TEXT NULL,
+ "failed" INTEGER NOT NULL DEFAULT 0,
+ "isProcessing" INTEGER NOT NULL DEFAULT 0
+);
+
+CREATE TABLE IF NOT EXISTS "embedding_providers" (
+ "providerId" TEXT NOT NULL PRIMARY KEY,
+ "name" TEXT NOT NULL,
+ "isEnabled" INTEGER NOT NULL DEFAULT 0,
+ "priority" INTEGER NOT NULL DEFAULT 0,
+ "config" TEXT NOT NULL,
+ "dateCreated" TEXT NOT NULL,
+ "utcDateCreated" TEXT NOT NULL,
+ "dateModified" TEXT NOT NULL,
+ "utcDateModified" TEXT NOT NULL
+);
diff --git a/demo/!!!meta.json b/demo/!!!meta.json
new file mode 100644
index 000000000..4899c4606
--- /dev/null
+++ b/demo/!!!meta.json
@@ -0,0 +1,6088 @@
+{
+ "formatVersion": 2,
+ "appVersion": "0.92.5-beta",
+ "files": [
+ {
+ "isClone": false,
+ "noteId": "root",
+ "notePath": [
+ "root"
+ ],
+ "title": "root",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "root",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "sxsosDSEMa8u",
+ "notePath": [
+ "root",
+ "sxsosDSEMa8u"
+ ],
+ "title": "Journal",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "book",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "calendarRoot",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-calendar",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "viewType",
+ "value": "calendar",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "calendar:view",
+ "value": "dayGridMonth",
+ "isInheritable": false,
+ "position": 40
+ }
+ ],
+ "dataFileName": "Journal.dat",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "Fb7eMY46lT6k",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k"
+ ],
+ "title": "Trilium Demo",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "qP9UEZ4kQ0NK",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "8DORylN1bL6J",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "rIP0ngPPeia6",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "TIKj1aLdHCzw",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xd22mlgxfdWw",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-book-reader",
+ "isInheritable": false,
+ "position": 70
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Trilium Demo.html",
+ "attachments": [
+ {
+ "attachmentId": "96nFd7uePoSp",
+ "title": "icon-color.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Trilium Demo_icon-color.svg"
+ }
+ ],
+ "dirFileName": "Trilium Demo",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "B08ZaJdYTK5v",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "B08ZaJdYTK5v"
+ ],
+ "title": "Inbox",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-inbox",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Inbox.html",
+ "attachments": [],
+ "dirFileName": "Inbox",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "nMiFslI2hks0",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "B08ZaJdYTK5v",
+ "nMiFslI2hks0"
+ ],
+ "title": "Grocery list for today",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Grocery list for today.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "RsIQGAjjnfgv",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "B08ZaJdYTK5v",
+ "RsIQGAjjnfgv"
+ ],
+ "title": "Book to read",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Book to read.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "47q1VMmTjJtx",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "B08ZaJdYTK5v",
+ "47q1VMmTjJtx"
+ ],
+ "title": "The Last Question",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "includeNoteLink",
+ "value": "ZWCYra81yOFO",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "_help_nBAXQFj20hS1",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "html",
+ "dataFileName": "The Last Question.html",
+ "attachments": [],
+ "dirFileName": "The Last Question",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "ZWCYra81yOFO",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "B08ZaJdYTK5v",
+ "47q1VMmTjJtx",
+ "ZWCYra81yOFO"
+ ],
+ "title": "The Last Question by Issac Asimov.pdf",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "file",
+ "mime": "application/pdf",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "the_last_question_-_issac_asimov.pdf",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "dataFileName": "The Last Question by Issac.pdf",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "vHpMd49rAUWn",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "vHpMd49rAUWn"
+ ],
+ "title": "Formatting examples",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "book",
+ "mime": "",
+ "attributes": [],
+ "attachments": [],
+ "dirFileName": "Formatting examples",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "qP9UEZ4kQ0NK",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "vHpMd49rAUWn",
+ "qP9UEZ4kQ0NK"
+ ],
+ "title": "School schedule",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-table",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "School schedule.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "8DORylN1bL6J",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "vHpMd49rAUWn",
+ "8DORylN1bL6J"
+ ],
+ "title": "Checkbox lists",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-check",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Checkbox lists.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "rIP0ngPPeia6",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "vHpMd49rAUWn",
+ "rIP0ngPPeia6"
+ ],
+ "title": "Highlighting",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-pencil",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Highlighting.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "TIKj1aLdHCzw",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "vHpMd49rAUWn",
+ "TIKj1aLdHCzw"
+ ],
+ "title": "Code blocks",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "IPifAXM3cyRS",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-code-alt",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Code blocks.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "xd22mlgxfdWw",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "vHpMd49rAUWn",
+ "xd22mlgxfdWw"
+ ],
+ "title": "Math",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-calculator",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Math.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "eYIqnBvdAmaE",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE"
+ ],
+ "title": "Journal",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "sorted",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "child:child:child:template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-calendar",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Journal.html",
+ "attachments": [],
+ "dirFileName": "Journal",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "3H4RMc45XIpI",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI"
+ ],
+ "title": "2021",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "sorted",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "yearNote",
+ "value": "2021",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "child:child:template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "2021",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "oNJGQb0t2SGb",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "oNJGQb0t2SGb"
+ ],
+ "title": "11 - November",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "sorted",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "monthNote",
+ "value": "2021-11",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "child:template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "11 - November",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "JvGlcvRf2Lu8",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "oNJGQb0t2SGb",
+ "JvGlcvRf2Lu8"
+ ],
+ "title": "28 - Tuesday",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-11-28",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "html",
+ "dataFileName": "28 - Tuesday.html",
+ "attachments": [],
+ "dirFileName": "28 - Tuesday",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "k11dU4eL5Teq",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "oNJGQb0t2SGb",
+ "JvGlcvRf2Lu8",
+ "k11dU4eL5Teq"
+ ],
+ "title": "Phone call about work project",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Phone call about work project.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "RNf8bX9CdR1k",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "oNJGQb0t2SGb",
+ "JvGlcvRf2Lu8",
+ "RNf8bX9CdR1k"
+ ],
+ "title": "Christmas gift ideas",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Christmas gift ideas.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "AaxrGGwyIPxO",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "oNJGQb0t2SGb",
+ "JvGlcvRf2Lu8",
+ "AaxrGGwyIPxO"
+ ],
+ "title": "Trusted timestamping",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Trusted timestamping.html",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "BkmGEUBkAvZC",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC"
+ ],
+ "title": "12 - December",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "sorted",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "monthNote",
+ "value": "2021-12",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "child:template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "12 - December",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "S9e1O6walQlq",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq"
+ ],
+ "title": "18 - Monday",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-18",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "weight",
+ "value": "74.9",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "18 - Monday.html",
+ "attachments": [],
+ "dirFileName": "18 - Monday",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "aqelIyWn57Aa",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "aqelIyWn57Aa"
+ ],
+ "title": "Meeting minutes",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Meeting minutes.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "xqGIjsmQPRPq",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq"
+ ],
+ "title": "Photos from the trip",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "book",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "bookZoomLevel",
+ "value": "2",
+ "isInheritable": false,
+ "position": 0
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Photos from the trip",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "1EdiWGOQB4RK",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "1EdiWGOQB4RK"
+ ],
+ "title": "01.jpeg",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "01.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "16881",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "01.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "NUeVuPpK1N7f",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "NUeVuPpK1N7f"
+ ],
+ "title": "02.jpeg",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "02.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "31697",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "02.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "u3Cb1NkuHVFu",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "u3Cb1NkuHVFu"
+ ],
+ "title": "03.jpeg",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "03.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "72522",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "03.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "RMk5ZL0mw2vh",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "RMk5ZL0mw2vh"
+ ],
+ "title": "04.jpeg",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "04.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "43670",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "04.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "lA77h6Gld6Af",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "lA77h6Gld6Af"
+ ],
+ "title": "05.jpeg",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "05.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "22327",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "05.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "5bKca24TwvXi",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "5bKca24TwvXi"
+ ],
+ "title": "06.jpeg",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "06.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "79751",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "06.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "Dw80f8XRUEkb",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "Dw80f8XRUEkb"
+ ],
+ "title": "07.jpeg",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "07.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "30223",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "07.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "3B4wY3ysFzUL",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "3B4wY3ysFzUL"
+ ],
+ "title": "08.jpeg",
+ "notePosition": 70,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "08.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "39928",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "08.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "8rJBABNUlLlJ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "8rJBABNUlLlJ"
+ ],
+ "title": "09.jpeg",
+ "notePosition": 80,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "09.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "48918",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "09.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "2mkSjqnJhj9i",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "2mkSjqnJhj9i"
+ ],
+ "title": "10.jpeg",
+ "notePosition": 90,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "10.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "44150",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "10.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "oPcnET6xqcz1",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "oPcnET6xqcz1"
+ ],
+ "title": "11.jpeg",
+ "notePosition": 100,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "11.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "76231",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "11.jpeg",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "V1OwJwsPuBzj",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "xqGIjsmQPRPq",
+ "V1OwJwsPuBzj"
+ ],
+ "title": "12.jpeg",
+ "notePosition": 110,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "image",
+ "mime": "image/jpg",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "12.jpeg",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "44286",
+ "isInheritable": false,
+ "position": 2
+ }
+ ],
+ "dataFileName": "12.jpeg",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "vH389HhCX3to",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "S9e1O6walQlq",
+ "vH389HhCX3to"
+ ],
+ "title": "Send invites for christmas party",
+ "notePosition": 20,
+ "prefix": "TODO",
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "work",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-18",
+ "isInheritable": false,
+ "position": 60
+ }
+ ],
+ "format": "html",
+ "dataFileName": "TODO - Send invites for christ.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "Xa15h4cRL6O8",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "Xa15h4cRL6O8"
+ ],
+ "title": "19 - Tuesday",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-19",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "weight",
+ "value": "75.4",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "19 - Tuesday.html",
+ "attachments": [],
+ "dirFileName": "19 - Tuesday",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "KaNVFkFBdkvZ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "Xa15h4cRL6O8",
+ "KaNVFkFBdkvZ"
+ ],
+ "title": "Dentist appointment",
+ "notePosition": 0,
+ "prefix": "DONE",
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "health",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "done",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-19",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "doneDate",
+ "value": "2021-12-19",
+ "isInheritable": false,
+ "position": 60
+ }
+ ],
+ "format": "html",
+ "dataFileName": "DONE - Dentist appointment.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "mMQKGLEGtRHn",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "mMQKGLEGtRHn"
+ ],
+ "title": "20 - Wednesday",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-20",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "weight",
+ "value": "75.2",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "20 - Wednesday.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "ZZz9RKYGLcK7",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "ZZz9RKYGLcK7"
+ ],
+ "title": "21 - Thursday",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-21",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "weight",
+ "value": "76",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "21 - Thursday.html",
+ "attachments": [],
+ "dirFileName": "21 - Thursday",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "hXwLRiT7g4dE",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "ZZz9RKYGLcK7",
+ "hXwLRiT7g4dE"
+ ],
+ "title": "Christmas shopping",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Christmas shopping.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "jpcqxgiEtJkn",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "ZZz9RKYGLcK7",
+ "jpcqxgiEtJkn"
+ ],
+ "title": "Office party",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Office party.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "KgE3kYIT24Sb",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "KgE3kYIT24Sb"
+ ],
+ "title": "22 - Friday",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-22",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "weight",
+ "value": "75.9",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "22 - Friday.html",
+ "attachments": [],
+ "dirFileName": "22 - Friday",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "AEa2Sy5UwdT4",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "KgE3kYIT24Sb",
+ "AEa2Sy5UwdT4"
+ ],
+ "title": "Christmas shopping",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Christmas shopping.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "NhSSbIObzEsM",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "KgE3kYIT24Sb",
+ "NhSSbIObzEsM"
+ ],
+ "title": "The Mechanical",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "ODEzxhfMalvQ",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "link",
+ "value": "https://www.amazon.com/Mechanical-Alchemy-Wars-Ian-Tregillis/dp/0316248002",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "author",
+ "value": "Ian Tregillis",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "readingStart",
+ "value": "2018-05-05",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "readingEnd",
+ "value": "2018-05-23",
+ "isInheritable": false,
+ "position": 50
+ }
+ ],
+ "format": "html",
+ "dataFileName": "The Mechanical.html",
+ "attachments": [],
+ "dirFileName": "The Mechanical",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "QGIhTr2UNF8V",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "KgE3kYIT24Sb",
+ "NhSSbIObzEsM",
+ "QGIhTr2UNF8V"
+ ],
+ "title": "Highlights",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Highlights.html",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "uDulJuuQUQV9",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "uDulJuuQUQV9"
+ ],
+ "title": "23 - Saturday",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-23",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "weight",
+ "value": "75.6",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "23 - Saturday.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "cG0jN1I9tYPs",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "cG0jN1I9tYPs"
+ ],
+ "title": "24 - Sunday - Christmas Eve!",
+ "notePosition": 70,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-24",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "weight",
+ "value": "76.1",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "24 - Sunday - Christmas Eve!.html",
+ "attachments": [],
+ "dirFileName": "24 - Sunday - Christmas Eve!",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "xybXfFXh4kbk",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "cG0jN1I9tYPs",
+ "xybXfFXh4kbk"
+ ],
+ "title": "Buy a board game for Alice",
+ "notePosition": 0,
+ "prefix": "DONE",
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "mall",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "done",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "christmas",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "shopping",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-20",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "label",
+ "name": "doneDate",
+ "value": "2021-12-24",
+ "isInheritable": false,
+ "position": 80
+ }
+ ],
+ "format": "html",
+ "dataFileName": "DONE - Buy a board game for Al.html",
+ "attachments": [
+ {
+ "attachmentId": "pZ0Azmg2ivRC",
+ "title": "codenames.jpg",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "DONE - Buy a board game fo.jpg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "HnU0m7ECI7G5",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "cG0jN1I9tYPs",
+ "HnU0m7ECI7G5"
+ ],
+ "title": "Buy milk",
+ "notePosition": 10,
+ "prefix": "TODO",
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "tesco",
+ "isInheritable": false,
+ "position": 3
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 4
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 4
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "groceries",
+ "isInheritable": false,
+ "position": 5
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "shopping",
+ "isInheritable": false,
+ "position": 7
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-24",
+ "isInheritable": false,
+ "position": 6
+ }
+ ],
+ "format": "html",
+ "dataFileName": "TODO - Buy milk.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "l0Hn9dXX4wJ7",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "BkmGEUBkAvZC",
+ "l0Hn9dXX4wJ7"
+ ],
+ "title": "30 - Thursday",
+ "notePosition": 80,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "sINmXkCzncB4",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "dateNote",
+ "value": "2021-12-30",
+ "isInheritable": false,
+ "position": 31
+ }
+ ],
+ "format": "html",
+ "dataFileName": "30 - Thursday.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "2kH7aQSosO9C",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "2kH7aQSosO9C"
+ ],
+ "title": "Epics",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Epics.html",
+ "attachments": [],
+ "dirFileName": "Epics",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "BH0WNWPyihkF",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "2kH7aQSosO9C",
+ "BH0WNWPyihkF"
+ ],
+ "title": "Christmas",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Christmas.html",
+ "attachments": [],
+ "dirFileName": "Christmas",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "PDRNLWTHfOi0",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "2kH7aQSosO9C",
+ "BH0WNWPyihkF",
+ "PDRNLWTHfOi0"
+ ],
+ "title": "Vacation days",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Vacation days.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "r45qXBox4mts",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "2kH7aQSosO9C",
+ "BH0WNWPyihkF",
+ "r45qXBox4mts"
+ ],
+ "title": "Christmas dinner",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Christmas dinner.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "5t7iAUBdEndw",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "2kH7aQSosO9C",
+ "BH0WNWPyihkF",
+ "5t7iAUBdEndw"
+ ],
+ "title": "Shopping",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Shopping",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "RNf8bX9CdR1k",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "2kH7aQSosO9C",
+ "BH0WNWPyihkF",
+ "5t7iAUBdEndw",
+ "RNf8bX9CdR1k"
+ ],
+ "title": "Christmas gift ideas",
+ "prefix": "28. 11. 2017",
+ "dataFileName": "28. 11. 2017 - Christmas gift ideas.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "2p3IczsCyfFH",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "3H4RMc45XIpI",
+ "2kH7aQSosO9C",
+ "2p3IczsCyfFH"
+ ],
+ "title": "Vacation",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Vacation.html",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "sINmXkCzncB4",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "eYIqnBvdAmaE",
+ "sINmXkCzncB4"
+ ],
+ "title": "Day template",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "label:weight",
+ "value": "promoted,number,single,precision=1",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-notepad",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "excludeFromNoteMap",
+ "value": "",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Day template.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "HGcABfDS6a51",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51"
+ ],
+ "title": "Tech",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-desktop",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Tech.html",
+ "attachments": [],
+ "dirFileName": "Tech",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "1wgEZXIXYS9H",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "1wgEZXIXYS9H"
+ ],
+ "title": "Security",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-lock-alt",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Security",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "AaxrGGwyIPxO",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "1wgEZXIXYS9H",
+ "AaxrGGwyIPxO"
+ ],
+ "title": "Trusted timestamping",
+ "prefix": null,
+ "dataFileName": "Trusted timestamping.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "7Sbzd7Qd7nSn",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "7Sbzd7Qd7nSn"
+ ],
+ "title": "Linux",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxl-tux",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Linux",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "zLD6PepcrYhv",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "7Sbzd7Qd7nSn",
+ "zLD6PepcrYhv"
+ ],
+ "title": "History",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "History.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "rwXwXJUFWswH",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "7Sbzd7Qd7nSn",
+ "rwXwXJUFWswH"
+ ],
+ "title": "Bash scripting",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Bash scripting.html",
+ "attachments": [],
+ "dirFileName": "Bash scripting",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "F7QT7w1jFQ4S",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "7Sbzd7Qd7nSn",
+ "rwXwXJUFWswH",
+ "F7QT7w1jFQ4S"
+ ],
+ "title": "While loop",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "While loop.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "Xllm9YiBRXqN",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "7Sbzd7Qd7nSn",
+ "rwXwXJUFWswH",
+ "Xllm9YiBRXqN"
+ ],
+ "title": "Bash startup modes",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Bash startup modes.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "E8inmLohu8XE",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "7Sbzd7Qd7nSn",
+ "E8inmLohu8XE"
+ ],
+ "title": "Ubuntu",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Ubuntu.html",
+ "attachments": [],
+ "dirFileName": "Ubuntu",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "elwY4igN6EGl",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "7Sbzd7Qd7nSn",
+ "E8inmLohu8XE",
+ "elwY4igN6EGl"
+ ],
+ "title": "Unity shortcuts",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Unity shortcuts.html",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "VpNAHIDDlcLh",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "VpNAHIDDlcLh"
+ ],
+ "title": "Programming",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-code-alt",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Programming",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "penrSU9H9j0z",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "VpNAHIDDlcLh",
+ "penrSU9H9j0z"
+ ],
+ "title": "Java",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxl-java",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Java.html",
+ "attachments": []
+ },
+ {
+ "isClone": true,
+ "noteId": "rwXwXJUFWswH",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "VpNAHIDDlcLh",
+ "rwXwXJUFWswH"
+ ],
+ "title": "Bash scripting",
+ "prefix": null,
+ "dataFileName": "Bash scripting.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "B16t4MPcxaAs",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "B16t4MPcxaAs"
+ ],
+ "title": "Node.js",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "book",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxl-nodejs",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Node.js",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "UDLLOhsgyVLk",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "B16t4MPcxaAs",
+ "UDLLOhsgyVLk"
+ ],
+ "title": "Intro",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Intro.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "LWpxsRzR1WbA",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "B16t4MPcxaAs",
+ "LWpxsRzR1WbA"
+ ],
+ "title": "Overview",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Overview.html",
+ "attachments": [],
+ "dirFileName": "Overview",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "PHD3wfCknzIJ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "B16t4MPcxaAs",
+ "LWpxsRzR1WbA",
+ "PHD3wfCknzIJ"
+ ],
+ "title": "History",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "History.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "ZBPDxGMrNx7O",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "B16t4MPcxaAs",
+ "LWpxsRzR1WbA",
+ "ZBPDxGMrNx7O"
+ ],
+ "title": "Platform architecture",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Platform architecture.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "dXjFj3SB4m1I",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "B16t4MPcxaAs",
+ "LWpxsRzR1WbA",
+ "dXjFj3SB4m1I"
+ ],
+ "title": "Industry support",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Industry support.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "TRT99FK2qOzt",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "HGcABfDS6a51",
+ "B16t4MPcxaAs",
+ "TRT99FK2qOzt"
+ ],
+ "title": "Releases",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Releases.html",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "k7rcoITZRsi6",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6"
+ ],
+ "title": "Note Types",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-file",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Note Types",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "P1OnNHRhFn9u",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "P1OnNHRhFn9u"
+ ],
+ "title": "Canvas",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "canvas",
+ "mime": "application/json",
+ "attributes": [],
+ "dataFileName": "Canvas.json",
+ "attachments": [
+ {
+ "attachmentId": "LrYmWTdvBYpX",
+ "title": "canvas-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 0,
+ "dataFileName": "Canvas_canvas-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "lZlMer9EkwF8",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8"
+ ],
+ "title": "Mermaid Diagrams",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "book",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-selection",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Mermaid Diagrams",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "DALQSU4fng4F",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "DALQSU4fng4F"
+ ],
+ "title": "Flow",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/mermaid",
+ "attributes": [],
+ "dataFileName": "Flow.txt",
+ "attachments": [
+ {
+ "attachmentId": "6u2TW8zweuBN",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Flow_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "g7rjYwoleBlR",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "g7rjYwoleBlR"
+ ],
+ "title": "Flow (ELK)",
+ "notePosition": 11,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/mermaid",
+ "attributes": [],
+ "dataFileName": "Flow (ELK).txt",
+ "attachments": [
+ {
+ "attachmentId": "9TKNS3IHYYQq",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Flow (ELK)_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "t73XNJNTTwQp",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "t73XNJNTTwQp"
+ ],
+ "title": "Sequence",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/mermaid",
+ "attributes": [],
+ "dataFileName": "Sequence.txt",
+ "attachments": [
+ {
+ "attachmentId": "XfWi1TqleVbL",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Sequence_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "6wdYxWSVuXof",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "6wdYxWSVuXof"
+ ],
+ "title": "Gantt",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "Gantt.txt",
+ "attachments": [
+ {
+ "attachmentId": "zCjOBL5UP9ii",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Gantt_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "WKL3yssKyoth",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "WKL3yssKyoth"
+ ],
+ "title": "Class",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "Class.txt",
+ "attachments": [
+ {
+ "attachmentId": "sRADq0QJpaYr",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Class_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "v9TM7cCXBILP",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "v9TM7cCXBILP"
+ ],
+ "title": "State",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "State.txt",
+ "attachments": [
+ {
+ "attachmentId": "NhPv2lQln1g4",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "State_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "1EDhd9QJyulq",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "1EDhd9QJyulq"
+ ],
+ "title": "Mind Map",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/mermaid",
+ "attributes": [],
+ "dataFileName": "Mind Map.txt",
+ "attachments": [
+ {
+ "attachmentId": "Q8EircLk65HH",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Mind Map_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "n32hpxSA2fP8",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "n32hpxSA2fP8"
+ ],
+ "title": "Pie",
+ "notePosition": 70,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "Pie.txt",
+ "attachments": [
+ {
+ "attachmentId": "6xhRWdFidyIg",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Pie_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "T0QEYaEv7PmE",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "T0QEYaEv7PmE"
+ ],
+ "title": "Journey",
+ "notePosition": 80,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "Journey.txt",
+ "attachments": [
+ {
+ "attachmentId": "sxLqDNmjlbK4",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Journey_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "P9QvwWzLZnXJ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "P9QvwWzLZnXJ"
+ ],
+ "title": "Git",
+ "notePosition": 90,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "Git.txt",
+ "attachments": [
+ {
+ "attachmentId": "tIoCBIaY50Jm",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Git_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "19O4nsY7dkPt",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "19O4nsY7dkPt"
+ ],
+ "title": "Entity Relationship",
+ "notePosition": 100,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "Entity Relationship.txt",
+ "attachments": [
+ {
+ "attachmentId": "AyKZhKQIE5w9",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Entity Relationship_mermai.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "2izpY6SPbmhp",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "2izpY6SPbmhp"
+ ],
+ "title": "Bar chart",
+ "notePosition": 110,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/mermaid",
+ "attributes": [],
+ "dataFileName": "Bar chart.txt",
+ "attachments": [
+ {
+ "attachmentId": "r1wMURlU52l8",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "Bar chart_mermaid-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "hwx0dffwqIGg",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "lZlMer9EkwF8",
+ "hwx0dffwqIGg"
+ ],
+ "title": "C4",
+ "notePosition": 120,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "mermaid",
+ "mime": "text/plain",
+ "attributes": [],
+ "dataFileName": "C4.txt",
+ "attachments": [
+ {
+ "attachmentId": "6v2qO6zsygVC",
+ "title": "mermaid-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 10,
+ "dataFileName": "C4_mermaid-export.svg"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "CN3CCLggUqf4",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "CN3CCLggUqf4"
+ ],
+ "title": "Mind Map",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "mindMap",
+ "mime": "application/json",
+ "attributes": [],
+ "dataFileName": "Mind Map.json",
+ "attachments": [
+ {
+ "attachmentId": "xKxyCN02w5d2",
+ "title": "mindmap-export.svg",
+ "role": "image",
+ "mime": "image/svg+xml",
+ "position": 0,
+ "dataFileName": "Mind Map_mindmap-export.svg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "OdCVNGzsvWuv",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv"
+ ],
+ "title": "Geo Map (The Seven Wonders of the World)",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "geoMap",
+ "mime": "application/json",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "label:geolocation",
+ "value": "promoted,alias=Geolocation,single,text",
+ "isInheritable": true,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "hidePromotedAttributes",
+ "value": "",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "dataFileName": "Geo Map (The Seven Wonders of .json",
+ "attachments": [],
+ "dirFileName": "Geo Map (The Seven Wonders of the World)",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "IdHyf4rlLmlO",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv",
+ "IdHyf4rlLmlO"
+ ],
+ "title": "The Colosseum, Rome, Italy",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "geolocation",
+ "value": "41.89024211851462, 12.492263083403595",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-circle",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "The Colosseum, Rome, Italy.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "Wyp6vjVo0vuV",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv",
+ "Wyp6vjVo0vuV"
+ ],
+ "title": "The Great Wall of China",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "geolocation",
+ "value": "40.431907671437244, 116.57035343915216",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-selection",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "The Great Wall of China.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "VsO5E97Y2mPy",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv",
+ "VsO5E97Y2mPy"
+ ],
+ "title": "The Taj Mahal, India",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "geolocation",
+ "value": "27.175173410074475, 78.04213146744753",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-arch",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "The Taj Mahal, India.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "8nRYOMoDdWs3",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv",
+ "8nRYOMoDdWs3"
+ ],
+ "title": "Christ the Redeemer, Brazil",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "geolocation",
+ "value": "-22.951993968508837, -43.21044464113274",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-church",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Christ the Redeemer, Brazil.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "nZxMTxkP8AQ4",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv",
+ "nZxMTxkP8AQ4"
+ ],
+ "title": "Machu Picchu, Peru",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "geolocation",
+ "value": "-13.163198787170078, -72.54528356174288",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-castle",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Machu Picchu, Peru.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "DtMcvaYKen9C",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv",
+ "DtMcvaYKen9C"
+ ],
+ "title": "Chichén Itzá, Mexico",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "geolocation",
+ "value": "20.678882007143176, -88.56836961554815",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-component",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Chichén Itzá, Mexico.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "ZkR3GvsSQ0Xe",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "k7rcoITZRsi6",
+ "OdCVNGzsvWuv",
+ "ZkR3GvsSQ0Xe"
+ ],
+ "title": "Petra, Jordan",
+ "notePosition": 70,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "geolocation",
+ "value": "30.32084750671952, 35.481009100454926",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-castle",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Petra, Jordan.html",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "L2NrzQACw0in",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "L2NrzQACw0in"
+ ],
+ "title": "Books",
+ "notePosition": 130,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "child:template",
+ "value": "ODEzxhfMalvQ",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "wordCount",
+ "value": "",
+ "isInheritable": true,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-book-open",
+ "isInheritable": false,
+ "position": 21
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Books",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "Mzby9GxzBFl1",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "L2NrzQACw0in",
+ "Mzby9GxzBFl1"
+ ],
+ "title": "To read",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "To read.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "ODEzxhfMalvQ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "L2NrzQACw0in",
+ "ODEzxhfMalvQ"
+ ],
+ "title": "Book template",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-book-reader",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "label:readingEnd",
+ "value": "promoted,single,date",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "label:readingStart",
+ "value": "promoted,single,date",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "label:author",
+ "value": "promoted,single,text",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "template",
+ "value": "",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "label",
+ "name": "label:link",
+ "value": "promoted,single,url",
+ "isInheritable": false,
+ "position": 40
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Book template.html",
+ "attachments": [],
+ "dirFileName": "Book template",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "MFVR8MlrXQDQ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "L2NrzQACw0in",
+ "ODEzxhfMalvQ",
+ "MFVR8MlrXQDQ"
+ ],
+ "title": "Highlights",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Highlights.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "IWFmoH3KgkH2",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "L2NrzQACw0in",
+ "IWFmoH3KgkH2"
+ ],
+ "title": "Reviews",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "child:template",
+ "value": "ODEzxhfMalvQ",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Reviews",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "NhSSbIObzEsM",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "L2NrzQACw0in",
+ "IWFmoH3KgkH2",
+ "NhSSbIObzEsM"
+ ],
+ "title": "The Mechanical",
+ "prefix": null,
+ "dataFileName": "The Mechanical.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "EBROzsTV1jh4",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "EBROzsTV1jh4"
+ ],
+ "title": "Work",
+ "notePosition": 150,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-briefcase-alt",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Work",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "WgVZEuZC0Hv8",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "EBROzsTV1jh4",
+ "WgVZEuZC0Hv8"
+ ],
+ "title": "HR",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "HR.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "oHu27s9uc20i",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "EBROzsTV1jh4",
+ "oHu27s9uc20i"
+ ],
+ "title": "Processes",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Processes.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "mrSqOUvKrvVS",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "EBROzsTV1jh4",
+ "mrSqOUvKrvVS"
+ ],
+ "title": "Projects",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Projects.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "6RKJSJ65qIn5",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "6RKJSJ65qIn5"
+ ],
+ "title": "Steel Blue",
+ "notePosition": 160,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/css",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "appTheme",
+ "value": "steel-blue",
+ "isInheritable": false,
+ "position": 0
+ }
+ ],
+ "dataFileName": "Steel Blue.css",
+ "attachments": [],
+ "dirFileName": "Steel Blue",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "83Ywz5JXl9pw",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "6RKJSJ65qIn5",
+ "83Ywz5JXl9pw"
+ ],
+ "title": "eb-garamond-v9-latin-regular.woff2",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "file",
+ "mime": "application/octet-stream",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "eb-garamond-v9-latin-regular.woff2",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "27608",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "customResourceProvider",
+ "value": "fonts/garamond.woff2",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "dataFileName": "eb-garamond-v9-latin-reg.woff2",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "K2IK5OccY70o",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "6RKJSJ65qIn5",
+ "K2IK5OccY70o"
+ ],
+ "title": "raleway-v12-latin-regular.woff2",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "file",
+ "mime": "application/octet-stream",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "raleway-v12-latin-regular.woff2",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "fileSize",
+ "value": "20444",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "customResourceProvider",
+ "value": "fonts/raleway.woff2",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "dataFileName": "raleway-v12-latin-regula.woff2",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "G8k9CPUVtDeE",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE"
+ ],
+ "title": "Scripting examples",
+ "notePosition": 350,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxl-javascript",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Scripting examples",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "zQpMt8tYmYPL",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL"
+ ],
+ "title": "Task manager",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-task",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Task manager.html",
+ "attachments": [],
+ "dirFileName": "Task manager",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "749vDoR12ulD",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD"
+ ],
+ "title": "Locations",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": true,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskLocationRoot",
+ "value": "",
+ "isInheritable": false,
+ "position": 0
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-map",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Locations",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "ps7IPoCpurK3",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "ps7IPoCpurK3"
+ ],
+ "title": "gym",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskLocationNote",
+ "value": "gym",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "dataFileName": "gym.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "gvgFDSKxYYRr",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "gvgFDSKxYYRr"
+ ],
+ "title": "work",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskLocationNote",
+ "value": "work",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "work",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "Evz7c4Npu4PO",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "gvgFDSKxYYRr",
+ "Evz7c4Npu4PO"
+ ],
+ "title": "Send invites for christmas party",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "7qiHS46jApK2",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "work",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-18",
+ "isInheritable": false,
+ "position": 60
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Send invites for christmas par.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "druYfHaAacBo",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "druYfHaAacBo"
+ ],
+ "title": "tesco",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskLocationNote",
+ "value": "tesco",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "tesco",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "hu6fwfUGqnZR",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "druYfHaAacBo",
+ "hu6fwfUGqnZR"
+ ],
+ "title": "Buy milk",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 1
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "7qiHS46jApK2",
+ "isInheritable": false,
+ "position": 2
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "tesco",
+ "isInheritable": false,
+ "position": 3
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 4
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 4
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "groceries",
+ "isInheritable": false,
+ "position": 5
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "shopping",
+ "isInheritable": false,
+ "position": 7
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-24",
+ "isInheritable": false,
+ "position": 6
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Buy milk.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "GrPlXB0Xk9k0",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "GrPlXB0Xk9k0"
+ ],
+ "title": "mall",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskLocationNote",
+ "value": "mall",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "mall",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "4uh4j70LaKiG",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "GrPlXB0Xk9k0",
+ "4uh4j70LaKiG"
+ ],
+ "title": "Buy some book for Bob",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "7qiHS46jApK2",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "mall",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "christmas",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "shopping",
+ "isInheritable": false,
+ "position": 80
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Buy some book for Bob.html",
+ "attachments": [],
+ "dirFileName": "Buy some book for Bob",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "DWjd4cV0s4YG",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "749vDoR12ulD",
+ "GrPlXB0Xk9k0",
+ "4uh4j70LaKiG",
+ "DWjd4cV0s4YG"
+ ],
+ "title": "Maybe Black Swan?",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Maybe Black Swan.html",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "74H7PQ7nSsUf",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "74H7PQ7nSsUf"
+ ],
+ "title": "Done",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskDoneRoot",
+ "value": "",
+ "isInheritable": false,
+ "position": 0
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-check-square",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Done",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "PbOr6Ka8Q1pu",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "74H7PQ7nSsUf",
+ "PbOr6Ka8Q1pu"
+ ],
+ "title": "Buy a board game for Alice",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "7qiHS46jApK2",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "mall",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "done",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "christmas",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "shopping",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-20",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "label",
+ "name": "doneDate",
+ "value": "2021-12-24",
+ "isInheritable": false,
+ "position": 80
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Buy a board game for Alice.html",
+ "attachments": [
+ {
+ "attachmentId": "gQqtPMhL3mA0",
+ "title": "codenames.jpg",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Buy a board game for Alice.jpg"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "oLis5ntGu1GE",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "74H7PQ7nSsUf",
+ "oLis5ntGu1GE"
+ ],
+ "title": "Dentist appointment",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "7qiHS46jApK2",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "tag",
+ "value": "health",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "done",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-19",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "doneDate",
+ "value": "2021-12-19",
+ "isInheritable": false,
+ "position": 60
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Dentist appointment.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "MkD3XMHCTSOr",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "74H7PQ7nSsUf",
+ "MkD3XMHCTSOr"
+ ],
+ "title": "Get a gym membership",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "template",
+ "value": "7qiHS46jApK2",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "location",
+ "value": "gym",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "done",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "todoDate",
+ "value": "2021-12-28",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "doneDate",
+ "value": "2021-12-30",
+ "isInheritable": false,
+ "position": 60
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Get a gym membership.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "o1sKXDXzZRwS",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "o1sKXDXzZRwS"
+ ],
+ "title": "TODO",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskTodoRoot",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "child:task",
+ "value": "",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "child:template",
+ "value": "7qiHS46jApK2",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "child:cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "bookmarkFolder",
+ "value": "",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-plane-take-off",
+ "isInheritable": false,
+ "position": 51
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "TODO",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "Evz7c4Npu4PO",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "o1sKXDXzZRwS",
+ "Evz7c4Npu4PO"
+ ],
+ "title": "Send invites for christmas party",
+ "prefix": null,
+ "dataFileName": "Send invites for christmas party.clone.html",
+ "type": "text",
+ "format": "html"
+ },
+ {
+ "isClone": true,
+ "noteId": "hu6fwfUGqnZR",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "o1sKXDXzZRwS",
+ "hu6fwfUGqnZR"
+ ],
+ "title": "Buy milk",
+ "prefix": null,
+ "dataFileName": "Buy milk.clone.html",
+ "type": "text",
+ "format": "html"
+ },
+ {
+ "isClone": true,
+ "noteId": "4uh4j70LaKiG",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "o1sKXDXzZRwS",
+ "4uh4j70LaKiG"
+ ],
+ "title": "Buy some book for Bob",
+ "prefix": null,
+ "dataFileName": "Buy some book for Bob.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "8fyQ8ULFg2w5",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "8fyQ8ULFg2w5"
+ ],
+ "title": "Implementation",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-code-alt",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Implementation",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "FvShZ1dQD0WH",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "8fyQ8ULFg2w5",
+ "FvShZ1dQD0WH"
+ ],
+ "title": "attribute changed",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=backend",
+ "attributes": [],
+ "dataFileName": "attribute changed.js",
+ "attachments": [],
+ "dirFileName": "attribute changed",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "g3wKmIEgGR9n",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "8fyQ8ULFg2w5",
+ "FvShZ1dQD0WH",
+ "g3wKmIEgGR9n"
+ ],
+ "title": "reconcileAssignments",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=backend",
+ "attributes": [],
+ "dataFileName": "reconcileAssignments.js",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "g4vuWDH3pfQB",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "8fyQ8ULFg2w5",
+ "g4vuWDH3pfQB"
+ ],
+ "title": "CSS",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/css",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "appCss",
+ "value": "",
+ "isInheritable": false,
+ "position": 0
+ }
+ ],
+ "dataFileName": "CSS.css",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "7qiHS46jApK2",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "8fyQ8ULFg2w5",
+ "7qiHS46jApK2"
+ ],
+ "title": "task template",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "label:location",
+ "value": "promoted,text,single",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "cssClass",
+ "value": "todo",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "label:tag",
+ "value": "promoted,text,multi",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "label",
+ "name": "label:todoDate",
+ "value": "promoted,date,single",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "label:doneDate",
+ "value": "promoted,date,single",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-task",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "label",
+ "name": "task",
+ "value": "",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "relation",
+ "name": "runOnAttributeChange",
+ "value": "FvShZ1dQD0WH",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "task template.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "SI8AwI2KJqip",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "8fyQ8ULFg2w5",
+ "SI8AwI2KJqip"
+ ],
+ "title": "createNewTask",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "createNewTask.js",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "ZLW5vUDmnj7c",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c"
+ ],
+ "title": "Tags",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskTagRoot",
+ "value": "",
+ "isInheritable": false,
+ "position": 0
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-purchase-tag",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Tags",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "L1NgccjlH70Q",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "L1NgccjlH70Q"
+ ],
+ "title": "health",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskTagNote",
+ "value": "health",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "dataFileName": "health.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "bRwEJbMouAJh",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "bRwEJbMouAJh"
+ ],
+ "title": "shopping",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskTagNote",
+ "value": "shopping",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "shopping",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "4uh4j70LaKiG",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "bRwEJbMouAJh",
+ "4uh4j70LaKiG"
+ ],
+ "title": "Buy some book for Bob",
+ "prefix": null,
+ "dataFileName": "Buy some book for Bob.clone.html",
+ "type": "text",
+ "format": "html"
+ },
+ {
+ "isClone": true,
+ "noteId": "hu6fwfUGqnZR",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "bRwEJbMouAJh",
+ "hu6fwfUGqnZR"
+ ],
+ "title": "Buy milk",
+ "prefix": null,
+ "dataFileName": "Buy milk.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "wxvh8gxBAFTr",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "wxvh8gxBAFTr"
+ ],
+ "title": "groceries",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskTagNote",
+ "value": "groceries",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "groceries",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "hu6fwfUGqnZR",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "wxvh8gxBAFTr",
+ "hu6fwfUGqnZR"
+ ],
+ "title": "Buy milk",
+ "prefix": null,
+ "dataFileName": "Buy milk.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "H8AbesQ2DsJV",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "H8AbesQ2DsJV"
+ ],
+ "title": "christmas",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "taskTagNote",
+ "value": "christmas",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "christmas",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "4uh4j70LaKiG",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "ZLW5vUDmnj7c",
+ "H8AbesQ2DsJV",
+ "4uh4j70LaKiG"
+ ],
+ "title": "Buy some book for Bob",
+ "prefix": null,
+ "dataFileName": "Buy some book for Bob.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "qv7UJuErc16Q",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "zQpMt8tYmYPL",
+ "qv7UJuErc16Q"
+ ],
+ "title": "Create Launcher",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=backend",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-sidebar",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "createNewTask",
+ "value": "SI8AwI2KJqip",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "executeButton",
+ "value": "Create Launcher",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "executeDescription",
+ "value": "This script creates a launcher on the left side bar which can be used to quickly create a new task",
+ "isInheritable": false,
+ "position": 40
+ }
+ ],
+ "dataFileName": "Create Launcher.js",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "uEhizdFWgTIC",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uEhizdFWgTIC"
+ ],
+ "title": "Word count widget",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "widget",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "dataFileName": "Word count widget.js",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "IYO5iEWuPCbj",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "IYO5iEWuPCbj"
+ ],
+ "title": "Weight Tracker",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "render",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "hideChildrenOverview",
+ "value": "",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "bookmarked",
+ "value": "",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-tachometer",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "renderNote",
+ "value": "iFlQcEYLIVWB",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Weight Tracker",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "iFlQcEYLIVWB",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "IYO5iEWuPCbj",
+ "iFlQcEYLIVWB"
+ ],
+ "title": "Implementation",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/html",
+ "attributes": [],
+ "dataFileName": "Implementation.html",
+ "attachments": [],
+ "dirFileName": "Implementation",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "fdpRmy4olJ9D",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "IYO5iEWuPCbj",
+ "iFlQcEYLIVWB",
+ "fdpRmy4olJ9D"
+ ],
+ "title": "JS code",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "JS code.js",
+ "attachments": [],
+ "dirFileName": "JS code",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "iS5BBNx0i74J",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "IYO5iEWuPCbj",
+ "iFlQcEYLIVWB",
+ "fdpRmy4olJ9D",
+ "iS5BBNx0i74J"
+ ],
+ "title": "chart.js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "file",
+ "mime": "text/javascript",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "chart.min.js",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "dataFileName": "chart.js",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "uK5ckLvFPUUX",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX"
+ ],
+ "title": "Statistics",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "book",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "bookZoomLevel",
+ "value": "2",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Statistics",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "BsUewm6yHngC",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC"
+ ],
+ "title": "Attribute count",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "render",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "renderNote",
+ "value": "AiKGUNbMJeOi",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Attribute count",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "AiKGUNbMJeOi",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC",
+ "AiKGUNbMJeOi"
+ ],
+ "title": "template",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/html",
+ "attributes": [],
+ "dataFileName": "template.html",
+ "attachments": [],
+ "dirFileName": "template",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "fYAbi7MctpJ1",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC",
+ "AiKGUNbMJeOi",
+ "fYAbi7MctpJ1"
+ ],
+ "title": "js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "js.js",
+ "attachments": [],
+ "dirFileName": "js",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "TsdykeHU5RJ9",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC",
+ "AiKGUNbMJeOi",
+ "fYAbi7MctpJ1",
+ "TsdykeHU5RJ9"
+ ],
+ "title": "renderPieChart",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "renderPieChart.js",
+ "attachments": [],
+ "dirFileName": "renderPieChart",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "AQV0tCouCZpT",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC",
+ "AiKGUNbMJeOi",
+ "fYAbi7MctpJ1",
+ "TsdykeHU5RJ9",
+ "AQV0tCouCZpT"
+ ],
+ "title": "chartjs-plugin-datalabels.min.js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "file",
+ "mime": "text/javascript",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "originalFileName",
+ "value": "chartjs-plugin-datalabels.min.js",
+ "isInheritable": false,
+ "position": 1
+ }
+ ],
+ "dataFileName": "chartjs-plugin-datalabe.min.js",
+ "attachments": [],
+ "dirFileName": "chartjs-plugin-datalabels.min.js",
+ "children": [
+ {
+ "isClone": true,
+ "noteId": "iS5BBNx0i74J",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC",
+ "AiKGUNbMJeOi",
+ "fYAbi7MctpJ1",
+ "TsdykeHU5RJ9",
+ "AQV0tCouCZpT",
+ "iS5BBNx0i74J"
+ ],
+ "title": "chart.js",
+ "prefix": null,
+ "dataFileName": "chart.js.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ },
+ {
+ "isClone": true,
+ "noteId": "iS5BBNx0i74J",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC",
+ "AiKGUNbMJeOi",
+ "fYAbi7MctpJ1",
+ "TsdykeHU5RJ9",
+ "iS5BBNx0i74J"
+ ],
+ "title": "chart.js",
+ "prefix": null,
+ "dataFileName": "chart.js.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "hfRME6bdRU2R",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "BsUewm6yHngC",
+ "AiKGUNbMJeOi",
+ "fYAbi7MctpJ1",
+ "hfRME6bdRU2R"
+ ],
+ "title": "renderTable",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "renderTable.js",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "H0nm1lyI4jCY",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "H0nm1lyI4jCY"
+ ],
+ "title": "Largest notes",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "render",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "renderNote",
+ "value": "1ZUtxvW1qeyZ",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Largest notes",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "1ZUtxvW1qeyZ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "H0nm1lyI4jCY",
+ "1ZUtxvW1qeyZ"
+ ],
+ "title": "template",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/html",
+ "attributes": [],
+ "dataFileName": "template.html",
+ "attachments": [],
+ "dirFileName": "template",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "jsM6edxHyM0C",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "H0nm1lyI4jCY",
+ "1ZUtxvW1qeyZ",
+ "jsM6edxHyM0C"
+ ],
+ "title": "js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "js.js",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "AJ2eejoELNhk",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "AJ2eejoELNhk"
+ ],
+ "title": "Most edited notes",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "render",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "renderNote",
+ "value": "VNUKOvrPKC76",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Most edited notes",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "VNUKOvrPKC76",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "AJ2eejoELNhk",
+ "VNUKOvrPKC76"
+ ],
+ "title": "template",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/html",
+ "attributes": [],
+ "dataFileName": "template.html",
+ "attachments": [],
+ "dirFileName": "template",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "JJyoW0AUEa3E",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "AJ2eejoELNhk",
+ "VNUKOvrPKC76",
+ "JJyoW0AUEa3E"
+ ],
+ "title": "js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "js.js",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "7W53TQFpBujr",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "7W53TQFpBujr"
+ ],
+ "title": "Most linked notes",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "render",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "renderNote",
+ "value": "1zt0MOCyJEVI",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Most linked notes",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "1zt0MOCyJEVI",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "7W53TQFpBujr",
+ "1zt0MOCyJEVI"
+ ],
+ "title": "template",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/html",
+ "attributes": [],
+ "dataFileName": "template.html",
+ "attachments": [],
+ "dirFileName": "template",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "76s2u6NeK7IE",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "7W53TQFpBujr",
+ "1zt0MOCyJEVI",
+ "76s2u6NeK7IE"
+ ],
+ "title": "js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "js.js",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "5xtL10PYc4bf",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "5xtL10PYc4bf"
+ ],
+ "title": "Note type count",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "render",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "renderNote",
+ "value": "fmbJsCyc7oOc",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Note type count",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "fmbJsCyc7oOc",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "5xtL10PYc4bf",
+ "fmbJsCyc7oOc"
+ ],
+ "title": "template",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/html",
+ "attributes": [],
+ "dataFileName": "template.html",
+ "attachments": [],
+ "dirFileName": "template",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "fqsDkKujJc3w",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "5xtL10PYc4bf",
+ "fmbJsCyc7oOc",
+ "fqsDkKujJc3w"
+ ],
+ "title": "js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "js.js",
+ "attachments": [],
+ "dirFileName": "js",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "iStjuccma54t",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "5xtL10PYc4bf",
+ "fmbJsCyc7oOc",
+ "fqsDkKujJc3w",
+ "iStjuccma54t"
+ ],
+ "title": "renderTable",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "renderTable.js",
+ "attachments": []
+ },
+ {
+ "isClone": true,
+ "noteId": "TsdykeHU5RJ9",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "5xtL10PYc4bf",
+ "fmbJsCyc7oOc",
+ "fqsDkKujJc3w",
+ "TsdykeHU5RJ9"
+ ],
+ "title": "renderPieChart",
+ "prefix": null,
+ "dataFileName": "renderPieChart.clone.html",
+ "type": "text",
+ "format": "html"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "JkMXQ0r5bRnI",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "JkMXQ0r5bRnI"
+ ],
+ "title": "Most cloned notes",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "render",
+ "mime": "",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "renderNote",
+ "value": "VeQJSgKIkaUQ",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "attachments": [],
+ "dirFileName": "Most cloned notes",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "VeQJSgKIkaUQ",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "JkMXQ0r5bRnI",
+ "VeQJSgKIkaUQ"
+ ],
+ "title": "template",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "text/html",
+ "attributes": [],
+ "dataFileName": "template.html",
+ "attachments": [],
+ "dirFileName": "template",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "NI8zZ7IznTZT",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "uK5ckLvFPUUX",
+ "JkMXQ0r5bRnI",
+ "VeQJSgKIkaUQ",
+ "NI8zZ7IznTZT"
+ ],
+ "title": "js",
+ "notePosition": 0,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=frontend",
+ "attributes": [],
+ "dataFileName": "js.js",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "IPifAXM3cyRS",
+ "notePath": [
+ "root",
+ "Fb7eMY46lT6k",
+ "G8k9CPUVtDeE",
+ "IPifAXM3cyRS"
+ ],
+ "title": "Custom request handler",
+ "notePosition": 90,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "code",
+ "mime": "application/javascript;env=backend",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "targetNote",
+ "value": "B08ZaJdYTK5v",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "customRequestHandler",
+ "value": "create-note",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "dataFileName": "Custom request handler.js",
+ "attachments": []
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "noImport": true,
+ "dataFileName": "navigation.html"
+ },
+ {
+ "noImport": true,
+ "dataFileName": "index.html"
+ },
+ {
+ "noImport": true,
+ "dataFileName": "style.css"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/public/app/doc_notes/en/User Guide/index.html b/demo/index.html
similarity index 87%
rename from src/public/app/doc_notes/en/User Guide/index.html
rename to demo/index.html
index fb16b5640..638b4e3bf 100644
--- a/src/public/app/doc_notes/en/User Guide/index.html
+++ b/demo/index.html
@@ -6,6 +6,6 @@