diff --git a/.github/actions/build-server/action.yml b/.github/actions/build-server/action.yml
index faa3c0752..b92b3875f 100644
--- a/.github/actions/build-server/action.yml
+++ b/.github/actions/build-server/action.yml
@@ -12,7 +12,7 @@ runs:
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: "pnpm"
- name: Install dependencies
shell: bash
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
index 62e04d48d..5e8fb1301 100644
--- a/.github/workflows/deploy-docs.yml
+++ b/.github/workflows/deploy-docs.yml
@@ -1,6 +1,4 @@
-# GitHub Actions workflow for deploying MkDocs documentation to Cloudflare Pages
-# This workflow builds and deploys your MkDocs site when changes are pushed to main
-name: Deploy MkDocs Documentation
+name: Deploy Documentation
on:
# Trigger on push to main branch
@@ -11,11 +9,9 @@ on:
# Only run when docs files change
paths:
- 'docs/**'
- - 'README.md' # README is synced to docs/index.md
- - 'mkdocs.yml'
- - 'requirements-docs.txt'
- - '.github/workflows/deploy-docs.yml'
- - 'scripts/fix-mkdocs-structure.ts'
+ - 'apps/edit-docs/**'
+ - 'apps/build-docs/**'
+ - 'packages/share-theme/**'
# Allow manual triggering from Actions tab
workflow_dispatch:
@@ -27,15 +23,13 @@ on:
- master
paths:
- 'docs/**'
- - 'README.md' # README is synced to docs/index.md
- - 'mkdocs.yml'
- - 'requirements-docs.txt'
- - '.github/workflows/deploy-docs.yml'
- - 'scripts/fix-mkdocs-structure.ts'
+ - 'apps/edit-docs/**'
+ - 'apps/build-docs/**'
+ - 'packages/share-theme/**'
jobs:
build-and-deploy:
- name: Build and Deploy MkDocs
+ name: Build and Deploy Documentation
runs-on: ubuntu-latest
timeout-minutes: 10
@@ -49,72 +43,27 @@ jobs:
steps:
- name: Checkout Repository
uses: actions/checkout@v5
- with:
- fetch-depth: 0 # Fetch all history for git info and mkdocs-git-revision-date plugin
- - name: Setup Python
- uses: actions/setup-python@v6
- with:
- python-version: '3.14'
- cache: 'pip'
- cache-dependency-path: 'requirements-docs.txt'
-
- - name: Install MkDocs and Dependencies
- run: |
- pip install --upgrade pip
- pip install -r requirements-docs.txt
- env:
- PIP_DISABLE_PIP_VERSION_CHECK: 1
-
- # Setup pnpm before fixing docs structure
- name: Setup pnpm
uses: pnpm/action-setup@v4
- # Setup Node.js with pnpm
- name: Setup Node.js
uses: actions/setup-node@v6
with:
- node-version: '22'
+ node-version: '24'
cache: 'pnpm'
- # Install Node.js dependencies for the TypeScript script
- name: Install Dependencies
- run: |
- pnpm install --frozen-lockfile
+ run: pnpm install --frozen-lockfile
- - name: Fix Documentation Structure
- run: |
- # Fix duplicate navigation entries by moving overview pages to index.md
- pnpm run chore:fix-mkdocs-structure
-
- - name: Build MkDocs Site
- run: |
- # Build with strict mode but allow expected warnings
- mkdocs build --verbose || {
- EXIT_CODE=$?
- # Check if the only issue is expected warnings
- if mkdocs build 2>&1 | grep -E "WARNING.*(README|not found)" && \
- [ $(mkdocs build 2>&1 | grep -c "ERROR") -eq 0 ]; then
- echo "✅ Build succeeded with expected warnings"
- mkdocs build --verbose
- else
- echo "❌ Build failed with unexpected errors"
- exit $EXIT_CODE
- fi
- }
-
- - name: Fix HTML Links
- run: |
- # Remove .md extensions from links in generated HTML
- pnpm tsx ./scripts/fix-html-links.ts site
+ - name: Trigger build of documentation
+ run: pnpm docs:build
- name: Validate Built Site
run: |
- # Basic validation that important files exist
test -f site/index.html || (echo "ERROR: site/index.html not found" && exit 1)
- test -f site/sitemap.xml || (echo "ERROR: site/sitemap.xml not found" && exit 1)
- test -d site/assets || (echo "ERROR: site/assets directory not found" && exit 1)
- echo "✅ Site validation passed"
+ test -f site/developer-guide/index.html || (echo "ERROR: site/developer-guide/index.html not found" && exit 1)
+ echo "✓ User Guide and Developer Guide built successfully"
- name: Deploy
uses: ./.github/actions/deploy-to-cloudflare-pages
diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml
index ec4aeda0e..f9174fb42 100644
--- a/.github/workflows/dev.yml
+++ b/.github/workflows/dev.yml
@@ -30,7 +30,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: "pnpm"
- run: pnpm install --frozen-lockfile
diff --git a/.github/workflows/main-docker.yml b/.github/workflows/main-docker.yml
index 407272a99..fab20d242 100644
--- a/.github/workflows/main-docker.yml
+++ b/.github/workflows/main-docker.yml
@@ -46,7 +46,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: "pnpm"
- name: Install npm dependencies
@@ -86,12 +86,12 @@ jobs:
- name: Upload Playwright trace
if: failure()
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: Playwright trace (${{ matrix.dockerfile }})
path: test-output/playwright/output
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@v5
if: ${{ !cancelled() }}
with:
name: Playwright report (${{ matrix.dockerfile }})
@@ -116,10 +116,10 @@ jobs:
- dockerfile: Dockerfile
platform: linux/arm64
image: ubuntu-24.04-arm
- - dockerfile: Dockerfile
+ - dockerfile: Dockerfile.legacy
platform: linux/arm/v7
image: ubuntu-24.04-arm
- - dockerfile: Dockerfile
+ - dockerfile: Dockerfile.legacy
platform: linux/arm/v8
image: ubuntu-24.04-arm
runs-on: ${{ matrix.image }}
@@ -146,7 +146,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: 'pnpm'
- name: Install dependencies
@@ -209,7 +209,7 @@ jobs:
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: digests-${{ env.PLATFORM_PAIR }}-${{ matrix.dockerfile }}
path: /tmp/digests/*
@@ -223,7 +223,7 @@ jobs:
- build
steps:
- name: Download digests
- uses: actions/download-artifact@v5
+ uses: actions/download-artifact@v6
with:
path: /tmp/digests
pattern: digests-*
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 0d0205f32..ddce68d42 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -52,7 +52,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -89,7 +89,7 @@ jobs:
name: Nightly Build
- name: Publish artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: ${{ github.event_name == 'pull_request' }}
with:
name: TriliumNotes ${{ matrix.os.name }} ${{ matrix.arch }}
diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml
index 886b46d61..a33d24283 100644
--- a/.github/workflows/playwright.yml
+++ b/.github/workflows/playwright.yml
@@ -24,7 +24,7 @@ jobs:
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: 'pnpm'
- name: Install dependencies
@@ -35,7 +35,7 @@ jobs:
- name: Upload test report
if: failure()
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: e2e report
path: apps/server-e2e/test-output
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3ee30040d..3d48cb80d 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -50,7 +50,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -73,7 +73,7 @@ jobs:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
- name: Upload the artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: release-desktop-${{ matrix.os.name }}-${{ matrix.arch }}
path: apps/desktop/upload/*.*
@@ -100,7 +100,7 @@ jobs:
arch: ${{ matrix.arch }}
- name: Upload the artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: release-server-linux-${{ matrix.arch }}
path: upload/*.*
@@ -120,7 +120,7 @@ jobs:
docs/Release Notes
- name: Download all artifacts
- uses: actions/download-artifact@v5
+ uses: actions/download-artifact@v6
with:
merge-multiple: true
pattern: release-*
diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml
index fe94c987a..7a87cc192 100644
--- a/.github/workflows/website.yml
+++ b/.github/workflows/website.yml
@@ -30,7 +30,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
- node-version: 22
+ node-version: 24
cache: "pnpm"
- name: Install dependencies
diff --git a/.nvmrc b/.nvmrc
index f5b3ef39f..40115e966 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-22.21.0
\ No newline at end of file
+24.11.0
\ No newline at end of file
diff --git a/_regroup/package.json b/_regroup/package.json
index 4cec178aa..fd13c78f1 100644
--- a/_regroup/package.json
+++ b/_regroup/package.json
@@ -37,20 +37,18 @@
"devDependencies": {
"@playwright/test": "1.56.1",
"@stylistic/eslint-plugin": "5.5.0",
- "@types/express": "5.0.3",
- "@types/node": "22.18.12",
- "@types/yargs": "17.0.33",
+ "@types/express": "5.0.5",
+ "@types/node": "24.10.0",
+ "@types/yargs": "17.0.34",
"@vitest/coverage-v8": "3.2.4",
- "eslint": "9.38.0",
+ "eslint": "9.39.0",
"eslint-plugin-simple-import-sort": "12.1.1",
"esm": "3.2.25",
"jsdoc": "4.0.5",
"lorem-ipsum": "2.0.8",
"rcedit": "4.0.1",
- "rimraf": "6.0.1",
- "tslib": "2.8.1",
- "typedoc": "0.28.14",
- "typedoc-plugin-missing-exports": "4.1.2"
+ "rimraf": "6.1.0",
+ "tslib": "2.8.1"
},
"optionalDependencies": {
"appdmg": "0.6.6"
diff --git a/_regroup/typedoc.json b/_regroup/typedoc.json
deleted file mode 100644
index 30771621c..000000000
--- a/_regroup/typedoc.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "entryPoints": [
- "src/services/backend_script_entrypoint.ts",
- "src/public/app/services/frontend_script_entrypoint.ts"
- ],
- "plugin": [
- "typedoc-plugin-missing-exports"
- ],
- "outputs": [
- {
- "name": "html",
- "path": "./docs/Script API"
- }
- ]
-}
diff --git a/apps/build-docs/package.json b/apps/build-docs/package.json
new file mode 100644
index 000000000..f22baec81
--- /dev/null
+++ b/apps/build-docs/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "build-docs",
+ "version": "1.0.0",
+ "description": "",
+ "main": "src/main.ts",
+ "scripts": {
+ "start": "tsx ."
+ },
+ "keywords": [],
+ "author": "Elian Doran ",
+ "license": "AGPL-3.0-only",
+ "packageManager": "pnpm@10.20.0",
+ "devDependencies": {
+ "@redocly/cli": "2.10.0",
+ "archiver": "7.0.1",
+ "fs-extra": "11.3.2",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
+ "typedoc": "0.28.14",
+ "typedoc-plugin-missing-exports": "4.1.2"
+ }
+}
diff --git a/apps/build-docs/src/backend_script_entrypoint.ts b/apps/build-docs/src/backend_script_entrypoint.ts
new file mode 100644
index 000000000..bc9087c0c
--- /dev/null
+++ b/apps/build-docs/src/backend_script_entrypoint.ts
@@ -0,0 +1,36 @@
+/**
+ * The backend script API is accessible to code notes with the "JS (backend)" language.
+ *
+ * The entire API is exposed as a single global: {@link api}
+ *
+ * @module Backend Script API
+ */
+
+/**
+ * This file creates the entrypoint for TypeDoc that simulates the context from within a
+ * script note on the server side.
+ *
+ * Make sure to keep in line with backend's `script_context.ts`.
+ */
+
+export type { default as AbstractBeccaEntity } from "../../server/src/becca/entities/abstract_becca_entity.js";
+export type { default as BAttachment } from "../../server/src/becca/entities/battachment.js";
+export type { default as BAttribute } from "../../server/src/becca/entities/battribute.js";
+export type { default as BBranch } from "../../server/src/becca/entities/bbranch.js";
+export type { default as BEtapiToken } from "../../server/src/becca/entities/betapi_token.js";
+export type { BNote };
+export type { default as BOption } from "../../server/src/becca/entities/boption.js";
+export type { default as BRecentNote } from "../../server/src/becca/entities/brecent_note.js";
+export type { default as BRevision } from "../../server/src/becca/entities/brevision.js";
+
+import BNote from "../../server/src/becca/entities/bnote.js";
+import BackendScriptApi, { type Api } from "../../server/src/services/backend_script_api.js";
+
+export type { Api };
+
+const fakeNote = new BNote();
+
+/**
+ * The `api` global variable allows access to the backend script API, which is documented in {@link Api}.
+ */
+export const api: Api = new BackendScriptApi(fakeNote, {});
diff --git a/apps/build-docs/src/build-docs.ts b/apps/build-docs/src/build-docs.ts
new file mode 100644
index 000000000..5d1a0cdd6
--- /dev/null
+++ b/apps/build-docs/src/build-docs.ts
@@ -0,0 +1,147 @@
+process.env.TRILIUM_INTEGRATION_TEST = "memory-no-store";
+process.env.TRILIUM_RESOURCE_DIR = "../server/src";
+process.env.NODE_ENV = "development";
+
+import cls from "@triliumnext/server/src/services/cls.js";
+import { dirname, join, resolve } from "path";
+import * as fs from "fs/promises";
+import * as fsExtra from "fs-extra";
+import archiver from "archiver";
+import { WriteStream } from "fs";
+import { execSync } from "child_process";
+import BuildContext from "./context.js";
+
+const DOCS_ROOT = "../../../docs";
+const OUTPUT_DIR = "../../site";
+
+async function importAndExportDocs(sourcePath: string, outputSubDir: string) {
+ const note = await importData(sourcePath);
+
+ // Use a meaningful name for the temporary zip file
+ const zipName = outputSubDir || "user-guide";
+ const zipFilePath = `output-${zipName}.zip`;
+ try {
+ const { exportToZip } = (await import("@triliumnext/server/src/services/export/zip.js")).default;
+ const branch = note.getParentBranches()[0];
+ const taskContext = new (await import("@triliumnext/server/src/services/task_context.js")).default(
+ "no-progress-reporting",
+ "export",
+ null
+ );
+ const fileOutputStream = fsExtra.createWriteStream(zipFilePath);
+ await exportToZip(taskContext, branch, "share", fileOutputStream);
+ await waitForStreamToFinish(fileOutputStream);
+
+ // Output to root directory if outputSubDir is empty, otherwise to subdirectory
+ const outputPath = outputSubDir ? join(OUTPUT_DIR, outputSubDir) : OUTPUT_DIR;
+ await extractZip(zipFilePath, outputPath);
+ } finally {
+ if (await fsExtra.exists(zipFilePath)) {
+ await fsExtra.rm(zipFilePath);
+ }
+ }
+}
+
+async function buildDocsInner() {
+ const i18n = await import("@triliumnext/server/src/services/i18n.js");
+ await i18n.initializeTranslations();
+
+ const sqlInit = (await import("../../server/src/services/sql_init.js")).default;
+ await sqlInit.createInitialDatabase(true);
+
+ // Wait for becca to be loaded before importing data
+ const beccaLoader = await import("../../server/src/becca/becca_loader.js");
+ await beccaLoader.beccaLoaded;
+
+ // Build User Guide
+ console.log("Building User Guide...");
+ await importAndExportDocs(join(__dirname, DOCS_ROOT, "User Guide"), "user-guide");
+
+ // Build Developer Guide
+ console.log("Building Developer Guide...");
+ await importAndExportDocs(join(__dirname, DOCS_ROOT, "Developer Guide"), "developer-guide");
+
+ // Copy favicon.
+ await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "favicon.ico"));
+ await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "user-guide", "favicon.ico"));
+ await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "developer-guide", "favicon.ico"));
+
+ console.log("Documentation built successfully!");
+}
+
+export async function importData(path: string) {
+ const buffer = await createImportZip(path);
+ const importService = (await import("../../server/src/services/import/zip.js")).default;
+ const TaskContext = (await import("../../server/src/services/task_context.js")).default;
+ const context = new TaskContext("no-progress-reporting", "importNotes", null);
+ const becca = (await import("../../server/src/becca/becca.js")).default;
+
+ const rootNote = becca.getRoot();
+ if (!rootNote) {
+ throw new Error("Missing root note for import.");
+ }
+ return await importService.importZip(context, buffer, rootNote, {
+ preserveIds: true
+ });
+}
+
+async function createImportZip(path: string) {
+ const inputFile = "input.zip";
+ const archive = archiver("zip", {
+ zlib: { level: 0 }
+ });
+
+ console.log("Archive path is ", resolve(path))
+ archive.directory(path, "/");
+
+ const outputStream = fsExtra.createWriteStream(inputFile);
+ archive.pipe(outputStream);
+ archive.finalize();
+ await waitForStreamToFinish(outputStream);
+
+ try {
+ return await fsExtra.readFile(inputFile);
+ } finally {
+ await fsExtra.rm(inputFile);
+ }
+}
+
+function waitForStreamToFinish(stream: WriteStream) {
+ return new Promise((res, rej) => {
+ stream.on("finish", () => res());
+ stream.on("error", (err) => rej(err));
+ });
+}
+
+export async function extractZip(zipFilePath: string, outputPath: string, ignoredFiles?: Set) {
+ const { readZipFile, readContent } = (await import("@triliumnext/server/src/services/import/zip.js"));
+ await readZipFile(await fs.readFile(zipFilePath), async (zip, entry) => {
+ // We ignore directories since they can appear out of order anyway.
+ if (!entry.fileName.endsWith("/") && !ignoredFiles?.has(entry.fileName)) {
+ const destPath = join(outputPath, entry.fileName);
+ const fileContent = await readContent(zip, entry);
+
+ await fsExtra.mkdirs(dirname(destPath));
+ await fs.writeFile(destPath, fileContent);
+ }
+
+ zip.readEntry();
+ });
+}
+
+export default async function buildDocs({ gitRootDir }: BuildContext) {
+ // Build the share theme.
+ execSync(`pnpm run --filter share-theme build`, {
+ stdio: "inherit",
+ cwd: gitRootDir
+ });
+
+ // Trigger the actual build.
+ await new Promise((res, rej) => {
+ cls.init(() => {
+ buildDocsInner()
+ .catch(rej)
+ .then(res);
+ });
+ });
+}
diff --git a/apps/build-docs/src/context.ts b/apps/build-docs/src/context.ts
new file mode 100644
index 000000000..ab2289e50
--- /dev/null
+++ b/apps/build-docs/src/context.ts
@@ -0,0 +1,4 @@
+export default interface BuildContext {
+ gitRootDir: string;
+ baseDir: string;
+}
diff --git a/apps/build-docs/src/frontend_script_entrypoint.ts b/apps/build-docs/src/frontend_script_entrypoint.ts
new file mode 100644
index 000000000..768774eca
--- /dev/null
+++ b/apps/build-docs/src/frontend_script_entrypoint.ts
@@ -0,0 +1,28 @@
+/**
+ * The front script API is accessible to code notes with the "JS (frontend)" language.
+ *
+ * The entire API is exposed as a single global: {@link api}
+ *
+ * @module Frontend Script API
+ */
+
+/**
+ * This file creates the entrypoint for TypeDoc that simulates the context from within a
+ * script note.
+ *
+ * Make sure to keep in line with frontend's `script_context.ts`.
+ */
+
+export type { default as BasicWidget } from "../../client/src/widgets/basic_widget.js";
+export type { default as FAttachment } from "../../client/src/entities/fattachment.js";
+export type { default as FAttribute } from "../../client/src/entities/fattribute.js";
+export type { default as FBranch } from "../../client/src/entities/fbranch.js";
+export type { default as FNote } from "../../client/src/entities/fnote.js";
+export type { Api } from "../../client/src/services/frontend_script_api.js";
+export type { default as NoteContextAwareWidget } from "../../client/src/widgets/note_context_aware_widget.js";
+export type { default as RightPanelWidget } from "../../client/src/widgets/right_panel_widget.js";
+
+import FrontendScriptApi, { type Api } from "../../client/src/services/frontend_script_api.js";
+
+//@ts-expect-error
+export const api: Api = new FrontendScriptApi();
diff --git a/apps/build-docs/src/index.html b/apps/build-docs/src/index.html
new file mode 100644
index 000000000..47a0bfb34
--- /dev/null
+++ b/apps/build-docs/src/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+ Redirecting...
+
+
+
If you are not redirected automatically, click here.
+
+
\ No newline at end of file
diff --git a/apps/build-docs/src/main.ts b/apps/build-docs/src/main.ts
new file mode 100644
index 000000000..19d533420
--- /dev/null
+++ b/apps/build-docs/src/main.ts
@@ -0,0 +1,29 @@
+import { join } from "path";
+import BuildContext from "./context";
+import buildSwagger from "./swagger";
+import { cpSync, existsSync, mkdirSync, rmSync } from "fs";
+import buildDocs from "./build-docs";
+import buildScriptApi from "./script-api";
+
+const context: BuildContext = {
+ gitRootDir: join(__dirname, "../../../"),
+ baseDir: join(__dirname, "../../../site")
+};
+
+async function main() {
+ // Clean input dir.
+ if (existsSync(context.baseDir)) {
+ rmSync(context.baseDir, { recursive: true });
+ }
+ mkdirSync(context.baseDir);
+
+ // Start building.
+ await buildDocs(context);
+ buildSwagger(context);
+ buildScriptApi(context);
+
+ // Copy index file.
+ cpSync(join(__dirname, "index.html"), join(context.baseDir, "index.html"));
+}
+
+main();
diff --git a/apps/build-docs/src/script-api.ts b/apps/build-docs/src/script-api.ts
new file mode 100644
index 000000000..8473ae3a0
--- /dev/null
+++ b/apps/build-docs/src/script-api.ts
@@ -0,0 +1,15 @@
+import { execSync } from "child_process";
+import BuildContext from "./context";
+import { join } from "path";
+
+export default function buildScriptApi({ baseDir, gitRootDir }: BuildContext) {
+ // Generate types
+ execSync(`pnpm typecheck`, { stdio: "inherit", cwd: gitRootDir });
+
+ for (const config of [ "backend", "frontend" ]) {
+ const outDir = join(baseDir, "script-api", config);
+ execSync(`pnpm typedoc --options typedoc.${config}.json --html "${outDir}"`, {
+ stdio: "inherit"
+ });
+ }
+}
diff --git a/apps/build-docs/src/swagger.ts b/apps/build-docs/src/swagger.ts
new file mode 100644
index 000000000..b3677aeeb
--- /dev/null
+++ b/apps/build-docs/src/swagger.ts
@@ -0,0 +1,32 @@
+import BuildContext from "./context";
+import { join } from "path";
+import { execSync } from "child_process";
+import { mkdirSync } from "fs";
+
+interface BuildInfo {
+ specPath: string;
+ outDir: string;
+}
+
+const DIR_PREFIX = "rest-api";
+
+const buildInfos: BuildInfo[] = [
+ {
+ // Paths are relative to Git root.
+ specPath: "apps/server/internal.openapi.yaml",
+ outDir: `${DIR_PREFIX}/internal`
+ },
+ {
+ specPath: "apps/server/etapi.openapi.yaml",
+ outDir: `${DIR_PREFIX}/etapi`
+ }
+];
+
+export default function buildSwagger({ baseDir, gitRootDir }: BuildContext) {
+ for (const { specPath, outDir } of buildInfos) {
+ const absSpecPath = join(gitRootDir, specPath);
+ const targetDir = join(baseDir, outDir);
+ mkdirSync(targetDir, { recursive: true });
+ execSync(`pnpm redocly build-docs ${absSpecPath} -o ${targetDir}/index.html`, { stdio: "inherit" });
+ }
+}
diff --git a/apps/build-docs/tsconfig.app.json b/apps/build-docs/tsconfig.app.json
new file mode 100644
index 000000000..b9e17115a
--- /dev/null
+++ b/apps/build-docs/tsconfig.app.json
@@ -0,0 +1,36 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "target": "ES2020",
+ "outDir": "dist",
+ "strict": false,
+ "types": [
+ "node",
+ "express"
+ ],
+ "rootDir": "src",
+ "tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo"
+ },
+ "include": [
+ "src/**/*.ts",
+ "../server/src/*.d.ts"
+ ],
+ "exclude": [
+ "eslint.config.js",
+ "eslint.config.cjs",
+ "eslint.config.mjs"
+ ],
+ "references": [
+ {
+ "path": "../server/tsconfig.app.json"
+ },
+ {
+ "path": "../desktop/tsconfig.app.json"
+ },
+ {
+ "path": "../client/tsconfig.app.json"
+ }
+ ]
+}
diff --git a/apps/build-docs/tsconfig.json b/apps/build-docs/tsconfig.json
new file mode 100644
index 000000000..858921cfb
--- /dev/null
+++ b/apps/build-docs/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "include": [],
+ "references": [
+ {
+ "path": "../server"
+ },
+ {
+ "path": "../client"
+ },
+ {
+ "path": "./tsconfig.app.json"
+ }
+ ]
+}
diff --git a/apps/build-docs/typedoc.backend.json b/apps/build-docs/typedoc.backend.json
new file mode 100644
index 000000000..1781774c6
--- /dev/null
+++ b/apps/build-docs/typedoc.backend.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "https://typedoc.org/schema.json",
+ "name": "Trilium Backend API",
+ "entryPoints": [
+ "src/backend_script_entrypoint.ts"
+ ],
+ "plugin": [
+ "typedoc-plugin-missing-exports"
+ ]
+}
diff --git a/apps/build-docs/typedoc.frontend.json b/apps/build-docs/typedoc.frontend.json
new file mode 100644
index 000000000..f07d20dc7
--- /dev/null
+++ b/apps/build-docs/typedoc.frontend.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "https://typedoc.org/schema.json",
+ "name": "Trilium Frontend API",
+ "entryPoints": [
+ "src/frontend_script_entrypoint.ts"
+ ],
+ "plugin": [
+ "typedoc-plugin-missing-exports"
+ ]
+}
diff --git a/apps/client/package.json b/apps/client/package.json
index 71957e495..c080281ec 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -15,7 +15,7 @@
"circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
},
"dependencies": {
- "@eslint/js": "9.38.0",
+ "@eslint/js": "9.39.0",
"@excalidraw/excalidraw": "0.18.0",
"@fullcalendar/core": "6.1.19",
"@fullcalendar/daygrid": "6.1.19",
@@ -37,12 +37,12 @@
"bootstrap": "5.3.8",
"boxicons": "2.1.4",
"color": "5.0.2",
- "dayjs": "1.11.18",
+ "dayjs": "1.11.19",
"dayjs-plugin-utc": "0.1.2",
- "debounce": "2.2.0",
+ "debounce": "3.0.0",
"draggabilly": "3.0.0",
"force-graph": "1.51.0",
- "globals": "16.4.0",
+ "globals": "16.5.0",
"i18next": "25.6.0",
"i18next-http-backend": "3.0.2",
"jquery": "3.7.1",
@@ -54,12 +54,12 @@
"leaflet-gpx": "2.2.0",
"mark.js": "8.11.1",
"marked": "16.4.1",
- "mermaid": "11.12.0",
- "mind-elixir": "5.3.3",
+ "mermaid": "11.12.1",
+ "mind-elixir": "5.3.4",
"normalize.css": "8.0.1",
"panzoom": "9.4.3",
"preact": "10.27.2",
- "react-i18next": "16.1.2",
+ "react-i18next": "16.2.3",
"reveal.js": "5.2.1",
"svg-pan-zoom": "3.6.2",
"tabulator-tables": "6.3.1",
@@ -74,9 +74,9 @@
"@types/leaflet-gpx": "1.3.8",
"@types/mark.js": "8.11.12",
"@types/reveal.js": "5.2.1",
- "@types/tabulator-tables": "6.2.11",
+ "@types/tabulator-tables": "6.3.0",
"copy-webpack-plugin": "13.0.1",
- "happy-dom": "20.0.7",
+ "happy-dom": "20.0.10",
"script-loader": "0.7.2",
"vite-plugin-static-copy": "3.1.4"
}
diff --git a/apps/client/src/components/app_context.ts b/apps/client/src/components/app_context.ts
index ce33d1447..7bc544e7e 100644
--- a/apps/client/src/components/app_context.ts
+++ b/apps/client/src/components/app_context.ts
@@ -218,12 +218,12 @@ export type CommandMappings = {
/** Works only in the electron context menu. */
replaceMisspelling: CommandData;
- importMarkdownInline: CommandData;
showPasswordNotSet: CommandData;
showProtectedSessionPasswordDialog: CommandData;
showUploadAttachmentsDialog: CommandData & { noteId: string };
showIncludeNoteDialog: CommandData & { textTypeWidget: EditableTextTypeWidget };
showAddLinkDialog: CommandData & { textTypeWidget: EditableTextTypeWidget, text: string };
+ showPasteMarkdownDialog: CommandData & { textTypeWidget: EditableTextTypeWidget };
closeProtectedSessionPasswordDialog: CommandData;
copyImageReferenceToClipboard: CommandData;
copyImageToClipboard: CommandData;
@@ -270,6 +270,7 @@ export type CommandMappings = {
closeThisNoteSplit: CommandData;
moveThisNoteSplit: CommandData & { isMovingLeft: boolean };
jumpToNote: CommandData;
+ openTodayNote: CommandData;
commandPalette: CommandData;
// Keyboard shortcuts
diff --git a/apps/client/src/components/entrypoints.ts b/apps/client/src/components/entrypoints.ts
index 7989960a6..8a902666f 100644
--- a/apps/client/src/components/entrypoints.ts
+++ b/apps/client/src/components/entrypoints.ts
@@ -159,6 +159,16 @@ export default class Entrypoints extends Component {
this.openInWindowCommand({ notePath: "", hoistedNoteId: "root" });
}
+ async openTodayNoteCommand() {
+ const todayNote = await dateNoteService.getTodayNote();
+ if (!todayNote) {
+ console.warn("Missing today note.");
+ return;
+ }
+
+ await appContext.tabManager.openInSameTab(todayNote.noteId);
+ }
+
async runActiveNoteCommand() {
const noteContext = appContext.tabManager.getActiveContext();
if (!noteContext) {
diff --git a/apps/client/src/entities/fnote.ts b/apps/client/src/entities/fnote.ts
index bcb6c408e..6d0a15506 100644
--- a/apps/client/src/entities/fnote.ts
+++ b/apps/client/src/entities/fnote.ts
@@ -417,7 +417,7 @@ export default class FNote {
return notePaths;
}
- getSortedNotePathRecords(hoistedNoteId = "root"): NotePathRecord[] {
+ getSortedNotePathRecords(hoistedNoteId = "root", activeNotePath: string | null = null): NotePathRecord[] {
const isHoistedRoot = hoistedNoteId === "root";
const notePaths: NotePathRecord[] = this.getAllNotePaths().map((path) => ({
@@ -428,7 +428,23 @@ export default class FNote {
isHidden: path.includes("_hidden")
}));
+ // Calculate the length of the prefix match between two arrays
+ const prefixMatchLength = (path: string[], target: string[]) => {
+ const diffIndex = path.findIndex((seg, i) => seg !== target[i]);
+ return diffIndex === -1 ? Math.min(path.length, target.length) : diffIndex;
+ };
+
notePaths.sort((a, b) => {
+ if (activeNotePath) {
+ const activeSegments = activeNotePath.split('/');
+ const aOverlap = prefixMatchLength(a.notePath, activeSegments);
+ const bOverlap = prefixMatchLength(b.notePath, activeSegments);
+ // Paths with more matching prefix segments are prioritized
+ // when the match count is equal, other criteria are used for sorting
+ if (bOverlap !== aOverlap) {
+ return bOverlap - aOverlap;
+ }
+ }
if (a.isInHoistedSubTree !== b.isInHoistedSubTree) {
return a.isInHoistedSubTree ? -1 : 1;
} else if (a.isArchived !== b.isArchived) {
@@ -449,10 +465,11 @@ export default class FNote {
* Returns the note path considered to be the "best"
*
* @param {string} [hoistedNoteId='root']
+ * @param {string|null} [activeNotePath=null]
* @return {string[]} array of noteIds constituting the particular note path
*/
- getBestNotePath(hoistedNoteId = "root") {
- return this.getSortedNotePathRecords(hoistedNoteId)[0]?.notePath;
+ getBestNotePath(hoistedNoteId = "root", activeNotePath: string | null = null) {
+ return this.getSortedNotePathRecords(hoistedNoteId, activeNotePath)[0]?.notePath;
}
/**
diff --git a/apps/client/src/print.tsx b/apps/client/src/print.tsx
index de11d581a..3dbdf1de0 100644
--- a/apps/client/src/print.tsx
+++ b/apps/client/src/print.tsx
@@ -56,7 +56,20 @@ function SingleNoteRenderer({ note, onReady }: RendererProps) {
await import("@triliumnext/ckeditor5/src/theme/ck-content.css");
}
const { $renderedContent } = await content_renderer.getRenderedContent(note, { noChildrenList: true });
- containerRef.current?.replaceChildren(...$renderedContent);
+ const container = containerRef.current!;
+ container.replaceChildren(...$renderedContent);
+
+ // Wait for all images to load.
+ const images = Array.from(container.querySelectorAll("img"));
+ await Promise.all(
+ images.map(img => {
+ if (img.complete) return Promise.resolve();
+ return new Promise(resolve => {
+ img.addEventListener("load", () => resolve(), { once: true });
+ img.addEventListener("error", () => resolve(), { once: true });
+ });
+ })
+ );
}
load().then(() => requestAnimationFrame(onReady))
diff --git a/apps/client/src/services/frontend_script_entrypoint.ts b/apps/client/src/services/frontend_script_entrypoint.ts
deleted file mode 100644
index 75a27d204..000000000
--- a/apps/client/src/services/frontend_script_entrypoint.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * The front script API is accessible to code notes with the "JS (frontend)" language.
- *
- * The entire API is exposed as a single global: {@link api}
- *
- * @module Frontend Script API
- */
-
-/**
- * This file creates the entrypoint for TypeDoc that simulates the context from within a
- * script note.
- *
- * Make sure to keep in line with frontend's `script_context.ts`.
- */
-
-export type { default as BasicWidget } from "../widgets/basic_widget.js";
-export type { default as FAttachment } from "../entities/fattachment.js";
-export type { default as FAttribute } from "../entities/fattribute.js";
-export type { default as FBranch } from "../entities/fbranch.js";
-export type { default as FNote } from "../entities/fnote.js";
-export type { Api } from "./frontend_script_api.js";
-export type { default as NoteContextAwareWidget } from "../widgets/note_context_aware_widget.js";
-export type { default as RightPanelWidget } from "../widgets/right_panel_widget.js";
-
-import FrontendScriptApi, { type Api } from "./frontend_script_api.js";
-
-//@ts-expect-error
-export const api: Api = new FrontendScriptApi();
diff --git a/apps/client/src/services/glob.ts b/apps/client/src/services/glob.ts
index 48d0d29a7..44ce64309 100644
--- a/apps/client/src/services/glob.ts
+++ b/apps/client/src/services/glob.ts
@@ -20,9 +20,6 @@ function setupGlobs() {
window.glob.froca = froca;
window.glob.treeCache = froca; // compatibility for CKEditor builds for a while
- // for CKEditor integration (button on block toolbar)
- window.glob.importMarkdownInline = async () => appContext.triggerCommand("importMarkdownInline");
-
window.onerror = function (msg, url, lineNo, columnNo, error) {
const string = String(msg).toLowerCase();
diff --git a/apps/client/src/services/in_app_help.ts b/apps/client/src/services/in_app_help.ts
index a0b118e5c..2f805783a 100644
--- a/apps/client/src/services/in_app_help.ts
+++ b/apps/client/src/services/in_app_help.ts
@@ -10,7 +10,7 @@ export const byNoteType: Record, string | null> = {
file: null,
image: null,
launcher: null,
- mermaid: null,
+ mermaid: "s1aBHPd79XYj",
mindMap: null,
noteMap: null,
relationMap: null,
diff --git a/apps/client/src/services/tree.ts b/apps/client/src/services/tree.ts
index fc54c3c75..ec5bc0191 100644
--- a/apps/client/src/services/tree.ts
+++ b/apps/client/src/services/tree.ts
@@ -26,21 +26,12 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
}
const path = notePath.split("/").reverse();
-
- if (!path.includes("root")) {
- path.push("root");
- }
-
const effectivePathSegments: string[] = [];
let childNoteId: string | null = null;
let i = 0;
- while (true) {
- if (i >= path.length) {
- break;
- }
-
- const parentNoteId = path[i++];
+ for (let i = 0; i < path.length; i++) {
+ const parentNoteId = path[i];
if (childNoteId !== null) {
const child = await froca.getNote(childNoteId, !logErrors);
@@ -65,7 +56,7 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
return null;
}
- if (!parents.some((p) => p.noteId === parentNoteId)) {
+ if (!parents.some(p => p.noteId === parentNoteId) || (i === path.length - 1 && parentNoteId !== 'root')) {
if (logErrors) {
const parent = froca.getNoteFromCache(parentNoteId);
@@ -77,7 +68,8 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
);
}
- const bestNotePath = child.getBestNotePath(hoistedNoteId);
+ const activeNotePath = appContext.tabManager.getActiveContextNotePath();
+ const bestNotePath = child.getBestNotePath(hoistedNoteId, activeNotePath);
if (bestNotePath) {
const pathToRoot = bestNotePath.reverse().slice(1);
@@ -108,7 +100,9 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
if (!note) {
throw new Error(`Unable to find note: ${notePath}.`);
}
- const bestNotePath = note.getBestNotePath(hoistedNoteId);
+
+ const activeNotePath = appContext.tabManager.getActiveContextNotePath();
+ const bestNotePath = note.getBestNotePath(hoistedNoteId, activeNotePath);
if (!bestNotePath) {
throw new Error(`Did not find any path segments for '${note.toString()}', hoisted note '${hoistedNoteId}'`);
diff --git a/apps/client/src/services/utils.ts b/apps/client/src/services/utils.ts
index 0f17bdc79..f5e037be5 100644
--- a/apps/client/src/services/utils.ts
+++ b/apps/client/src/services/utils.ts
@@ -11,7 +11,11 @@ export function reloadFrontendApp(reason?: string) {
logInfo(`Frontend app reload: ${reason}`);
}
- window.location.reload();
+ if (isElectron()) {
+ dynamicRequire("@electron/remote").BrowserWindow.getFocusedWindow()?.reload();
+ } else {
+ window.location.reload();
+ }
}
export function restartDesktopApp() {
diff --git a/apps/client/src/share.ts b/apps/client/src/share.ts
deleted file mode 100644
index b438f0c0c..000000000
--- a/apps/client/src/share.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-import "normalize.css";
-import "boxicons/css/boxicons.min.css";
-import "@triliumnext/ckeditor5/src/theme/ck-content.css";
-import "@triliumnext/share-theme/styles/index.css";
-import "@triliumnext/share-theme/scripts/index.js";
-
-async function ensureJQuery() {
- const $ = (await import("jquery")).default;
- (window as any).$ = $;
-}
-
-async function applyMath() {
- const anyMathBlock = document.querySelector("#content .math-tex");
- if (!anyMathBlock) {
- return;
- }
-
- const renderMathInElement = (await import("./services/math.js")).renderMathInElement;
- renderMathInElement(document.getElementById("content"));
-}
-
-async function formatCodeBlocks() {
- const anyCodeBlock = document.querySelector("#content pre");
- if (!anyCodeBlock) {
- return;
- }
- await ensureJQuery();
- const { formatCodeBlocks } = await import("./services/syntax_highlight.js");
- await formatCodeBlocks($("#content"));
-}
-
-async function setupTextNote() {
- formatCodeBlocks();
- applyMath();
-
- const setupMermaid = (await import("./share/mermaid.js")).default;
- setupMermaid();
-}
-
-/**
- * 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: string | null = 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 noteType = determineNoteType();
-
- if (noteType === "text") {
- setupTextNote();
- }
-
- const toggleMenuButton = document.getElementById("toggleMenuButton");
- const layout = document.getElementById("layout");
-
- if (toggleMenuButton && layout) {
- toggleMenuButton.addEventListener("click", () => layout.classList.toggle("showMenu"));
- }
- },
- false
-);
-
-function determineNoteType() {
- const bodyClass = document.body.className;
- const match = bodyClass.match(/type-([^\s]+)/);
- return match ? match[1] : null;
-}
-
-// workaround to prevent webpack from removing "fetchNote" as dead code:
-// add fetchNote as property to the window object
-Object.defineProperty(window, "fetchNote", {
- value: fetchNote
-});
diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css
index 7f67e4827..1f4152792 100644
--- a/apps/client/src/stylesheets/style.css
+++ b/apps/client/src/stylesheets/style.css
@@ -2034,9 +2034,9 @@ body.zen #right-pane,
body.zen #mobile-sidebar-wrapper,
body.zen .tab-row-container,
body.zen .tab-row-widget,
-body.zen .ribbon-container:not(:has(.classic-toolbar-widget.visible)),
-body.zen .ribbon-container:has(.classic-toolbar-widget.visible) .ribbon-top-row,
-body.zen .ribbon-container .ribbon-body:not(:has(.classic-toolbar-widget.visible)),
+body.zen .ribbon-container:not(:has(.classic-toolbar-widget)),
+body.zen .ribbon-container:has(.classic-toolbar-widget) .ribbon-top-row,
+body.zen .ribbon-container .ribbon-body:not(:has(.classic-toolbar-widget)),
body.zen .note-icon-widget,
body.zen .title-row .icon-action,
body.zen .floating-buttons-children > *:not(.bx-edit-alt),
diff --git a/apps/client/src/translations/ar/translation.json b/apps/client/src/translations/ar/translation.json
index 2e11116fb..dffb4f9d4 100644
--- a/apps/client/src/translations/ar/translation.json
+++ b/apps/client/src/translations/ar/translation.json
@@ -12,6 +12,9 @@
"toast": {
"critical-error": {
"title": "خطأ فادح"
+ },
+ "widget-error": {
+ "title": "فشل في البدء بعنصر الواجهة"
}
},
"add_link": {
@@ -26,7 +29,8 @@
"edit_branch_prefix": "تعديل بادئة الفرع",
"prefix": "البادئة: ",
"save": "حفظ",
- "help_on_tree_prefix": "مساعدة حول بادئة الشجرة"
+ "help_on_tree_prefix": "مساعدة حول بادئة الشجرة",
+ "branch_prefix_saved": "تم حفظ بادئة الفرع."
},
"bulk_actions": {
"bulk_actions": "اجراءات جماعية",
@@ -83,7 +87,8 @@
"workspace_calendar_root": "تحديد جذر التقويم لكل مساحة عمل",
"hide_highlight_widget": "اخفاء عنصر واجهة قائمة التمييزات",
"is_owned_by_note": "تخص الملاحظة",
- "and_more": "... و {{count}}مرات اكثر."
+ "and_more": "... و {{count}}مرات اكثر.",
+ "related_notes_title": "ملاحظات اخرى بنفس التسمية"
},
"rename_label": {
"to": "الى",
@@ -127,7 +132,9 @@
"delete_attachment": "حذف المرفق",
"upload_new_revision": "رفع مراجعة جديدة",
"copy_link_to_clipboard": "نسخ الرابط الى الحافظة",
- "convert_attachment_into_note": "تحويل المرفق الى ملاحظة"
+ "convert_attachment_into_note": "تحويل المرفق الى ملاحظة",
+ "delete_success": "تم حذف المرفق \"{{title}}\" .",
+ "enter_new_name": "ادخل اسم مرفق جديد"
},
"calendar": {
"week": "أسبوع",
@@ -259,7 +266,8 @@
"note_paths": {
"search": "بحث",
"archived": "مؤرشف",
- "title": "مسارات الملاحظة"
+ "title": "مسارات الملاحظة",
+ "clone_button": "جار نسخ الملاحظة الى مكان جديد..."
},
"script_executor": {
"query": "استعلام",
@@ -372,7 +380,8 @@
"export_note_title": "تصدير الملاحظة",
"export_status": "حالة التصدير",
"export_finished_successfully": "اكتمل التصدير بنجاح.",
- "export_in_progress": "جار التصدير: {{progressCount}}"
+ "export_in_progress": "جار التصدير: {{progressCount}}",
+ "choose_export_type": "اختر نوع التصدير اولا من فضلك"
},
"help": {
"troubleshooting": "أستكشاف الاخطاء واصلاحها",
@@ -402,7 +411,10 @@
"movingCloningNotes": "نقل/ استنساخ الملاحظات",
"deleteNotes": "حذف الملاحظة/ الشجرة الفرعية",
"collapseWholeTree": "طي شجرة الملاحظة باكملها",
- "followLink": "اتبع تلرابط تحت المؤشر"
+ "followLink": "اتبع تلرابط تحت المؤشر",
+ "onlyInDesktop": "في سطح المكتب فقط(Electron build)",
+ "createEditLink": "انشاء/ تحرير رابط خارجي",
+ "quickSearch": "الانتقال الى مربع البحث السريع"
},
"import": {
"options": "خيارات",
@@ -465,7 +477,13 @@
"delete_all_button": "حذف كل المراجعات",
"settings": "اعدادات مراجعة الملاحظة",
"diff_not_available": "المقارنة غير متوفرة.",
- "help_title": "مساعدة حول مراجعات الملاحظة"
+ "help_title": "مساعدة حول مراجعات الملاحظة",
+ "diff_off_hint": "انقر لعرض محتويات الملاحظة",
+ "revisions_deleted": "تم حذف جميع نسخ المراجعات للملاحظة.",
+ "revision_restored": "تم استعادة نسخ المراجعة للملاحظة.",
+ "revision_deleted": "تم حذف مراجعة الملاحظة.",
+ "snapshot_interval": "فاصل زمني لحفظ لقطات اصدارات المراجعة: {{seconds}}",
+ "maximum_revisions": "حد عدد لقطات اصدارات الملاحظة: {{number}}"
},
"sort_child_notes": {
"title": "عنوان",
@@ -479,13 +497,15 @@
"sorting_direction": "اتجاه الترتيب",
"natural_sort": "الترتيب الطبيعي",
"natural_sort_language": "لغات الترتيب الطبيعي",
- "sort_children_by": "ترتيب العناصر الفرعية حسب..."
+ "sort_children_by": "ترتيب العناصر الفرعية حسب...",
+ "sort_folders_at_top": "ترتيب المجلدات في الاعلى"
},
"recent_changes": {
"undelete_link": "الغاء الحذف",
"title": "التغيرات الاخيرة",
"no_changes_message": "لايوجد تغيير لحد الان...",
- "erase_notes_button": "مسح الملاحظات المحذوفة الان"
+ "erase_notes_button": "مسح الملاحظات المحذوفة الان",
+ "deleted_notes_message": "تم حذف الملاحظات نهائيا."
},
"edited_notes": {
"deleted": "(حذف)",
@@ -696,7 +716,6 @@
"backup_database_now": "نسخ اختياطي لقاعدة البيانات الان"
},
"etapi": {
- "wiki": "ويكي",
"created": "تم الأنشاء",
"actions": "أجراءات",
"title": "ETAPI",
@@ -705,7 +724,9 @@
"default_token_name": "رمز جديد",
"rename_token_title": "اعادة تسمية الرمز",
"rename_token": "اعادة تسمية هذا الرمز",
- "create_token": "انشاء رمز PEAPI جديد"
+ "create_token": "انشاء رمز PEAPI جديد",
+ "new_token_title": "رمز ETAPI جديد",
+ "token_created_title": "انشاء رمز ETAPI"
},
"password": {
"heading": "كلمة المرور",
@@ -811,7 +832,8 @@
"help_on_links": "مساعدة حول الارتباطات التشعبية",
"notes_to_clone": "ملاحظات للنسخ",
"target_parent_note": "الملاحظة الاصلية الهدف",
- "clone_to_selected_note": "استنساخ الى الملاحظة المحددة"
+ "clone_to_selected_note": "استنساخ الى الملاحظة المحددة",
+ "no_path_to_clone_to": "لايوجد مسار لنسخ المحتوى الية."
},
"table_of_contents": {
"unit": "عناوين",
@@ -1029,7 +1051,8 @@
},
"delete_note": {
"delete_note": "حذف الملاحظة",
- "delete_matched_notes": "حف الملاحظات المطابقة"
+ "delete_matched_notes": "حف الملاحظات المطابقة",
+ "delete_matched_notes_description": "سوف يؤدي هذا الى حذف الملاحظات المطابقة."
},
"rename_note": {
"rename_note": "اعادة تسمية الملاحظة",
@@ -1312,7 +1335,8 @@
"notes_to_move": "الملاحظات المراد نقلها",
"target_parent_note": "ملاحظة الاصل الهدف",
"dialog_title": "انقل الملاحظات الى...",
- "move_button": "نقل الىالملاحظة المحددة"
+ "move_button": "نقل الىالملاحظة المحددة",
+ "error_no_path": "لايوجد مسار لنقل العنصر الية."
},
"delete_revisions": {
"delete_note_revisions": "حذف مراجعات الملاحظة"
@@ -1363,7 +1387,8 @@
"save_attributes": "حفظ السمات ",
"add_a_new_attribute": "اضافة سمة جديدة",
"add_new_label_definition": "اضافة تعريف لتسمية جديدة",
- "add_new_relation_definition": "اضافة تعريف لعلاقة جديدة"
+ "add_new_relation_definition": "اضافة تعريف لعلاقة جديدة",
+ "add_new_relation": "اضافة علاقة جديدة "
},
"zen_mode": {
"button_exit": "الخروج من وضع Zen"
@@ -1434,5 +1459,8 @@
},
"png_export_button": {
"button_title": "تصدير المخطط كملف PNG"
+ },
+ "protected_session_status": {
+ "inactive": "انقر للدخول الى جلسة محمية"
}
}
diff --git a/apps/client/src/translations/cn/translation.json b/apps/client/src/translations/cn/translation.json
index c7053e709..44aa6d387 100644
--- a/apps/client/src/translations/cn/translation.json
+++ b/apps/client/src/translations/cn/translation.json
@@ -51,7 +51,7 @@
"bulk_actions_executed": "批量操作已成功执行。",
"none_yet": "暂无操作 ... 通过点击上方的可用操作添加一个操作。",
"labels": "标签",
- "relations": "关联关系",
+ "relations": "关系",
"notes": "笔记",
"other": "其它"
},
@@ -104,7 +104,8 @@
"export_status": "导出状态",
"export_in_progress": "导出进行中:{{progressCount}}",
"export_finished_successfully": "导出成功完成。",
- "format_pdf": "PDF - 用于打印或共享目的。"
+ "format_pdf": "PDF - 用于打印或共享目的。",
+ "share-format": "HTML 网页发布——采用与共享笔记相同的主题,但可发布为静态网站。"
},
"help": {
"noteNavigation": "笔记导航",
@@ -184,7 +185,8 @@
},
"import-status": "导入状态",
"in-progress": "导入进行中:{{progress}}",
- "successful": "导入成功完成。"
+ "successful": "导入成功完成。",
+ "importZipRecommendation": "导入 ZIP 文件时,笔记层级将反映压缩文件内的子目录结构。"
},
"include_note": {
"dialog_title": "包含笔记",
@@ -259,7 +261,6 @@
"delete_all_revisions": "删除此笔记的所有修订版本",
"delete_all_button": "删除所有修订版本",
"help_title": "关于笔记修订版本的帮助",
- "revision_last_edited": "此修订版本上次编辑于 {{date}}",
"confirm_delete_all": "您是否要删除此笔记的所有修订版本?",
"no_revisions": "此笔记暂无修订版本...",
"restore_button": "恢复",
@@ -1288,10 +1289,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI 是一个 REST API,用于以编程方式访问 Trilium 实例,而无需 UI。",
- "see_more": "有关更多详细信息,请参见 {{- link_to_wiki}} 和 {{- link_to_openapi_spec}} 或 {{- link_to_swagger_ui}}。",
- "wiki": "维基",
- "openapi_spec": "ETAPI OpenAPI 规范",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "创建新的 ETAPI 令牌",
"existing_tokens": "现有令牌",
"no_tokens_yet": "目前还没有令牌。点击上面的按钮创建一个。",
@@ -1558,7 +1555,9 @@
"window-on-top": "保持此窗口置顶"
},
"note_detail": {
- "could_not_find_typewidget": "找不到类型为 '{{type}}' 的 typeWidget"
+ "could_not_find_typewidget": "找不到类型为 '{{type}}' 的 typeWidget",
+ "printing": "正在打印…",
+ "printing_pdf": "正在导出为PDF…"
},
"note_title": {
"placeholder": "请输入笔记标题..."
diff --git a/apps/client/src/translations/de/translation.json b/apps/client/src/translations/de/translation.json
index ca0e40d69..6ff9525ff 100644
--- a/apps/client/src/translations/de/translation.json
+++ b/apps/client/src/translations/de/translation.json
@@ -4,7 +4,7 @@
"homepage": "Startseite:",
"app_version": "App-Version:",
"db_version": "DB-Version:",
- "sync_version": "Synch-version:",
+ "sync_version": "Sync-Version:",
"build_date": "Build-Datum:",
"build_revision": "Build-Revision:",
"data_directory": "Datenverzeichnis:"
@@ -104,7 +104,8 @@
"export_status": "Exportstatus",
"export_in_progress": "Export läuft: {{progressCount}}",
"export_finished_successfully": "Der Export wurde erfolgreich abgeschlossen.",
- "format_pdf": "PDF - für Ausdrucke oder Teilen."
+ "format_pdf": "PDF - für Ausdrucke oder Teilen.",
+ "share-format": "HTML für die Web-Veröffentlichung – verwendet dasselbe Theme wie bei freigegebenen Notizen, kann jedoch als statische Website veröffentlicht werden."
},
"help": {
"noteNavigation": "Notiz Navigation",
@@ -184,7 +185,8 @@
},
"import-status": "Importstatus",
"in-progress": "Import läuft: {{progress}}",
- "successful": "Import erfolgreich abgeschlossen."
+ "successful": "Import erfolgreich abgeschlossen.",
+ "importZipRecommendation": "Beim Import einer ZIP-Datei wird die Notizhierarchie aus der Ordnerstruktur im Archiv übernommen."
},
"include_note": {
"dialog_title": "Notiz beifügen",
@@ -259,7 +261,6 @@
"delete_all_revisions": "Lösche alle Revisionen dieser Notiz",
"delete_all_button": "Alle Revisionen löschen",
"help_title": "Hilfe zu Notizrevisionen",
- "revision_last_edited": "Diese Revision wurde zuletzt am {{date}} bearbeitet",
"confirm_delete_all": "Möchtest du alle Revisionen dieser Notiz löschen?",
"no_revisions": "Für diese Notiz gibt es noch keine Revisionen...",
"confirm_restore": "Möchtest du diese Revision wiederherstellen? Dadurch werden der aktuelle Titel und Inhalt der Notiz mit dieser Revision überschrieben.",
@@ -647,7 +648,8 @@
"logout": "Abmelden",
"show-cheatsheet": "Cheatsheet anzeigen",
"toggle-zen-mode": "Zen Modus",
- "new-version-available": "Neues Update verfügbar"
+ "new-version-available": "Neues Update verfügbar",
+ "download-update": "Version {{latestVersion}} herunterladen"
},
"sync_status": {
"unknown": "
Der Synchronisations-Status wird bekannt, sobald der nächste Synchronisierungsversuch gestartet wird.
Klicke, um eine Synchronisierung jetzt auszulösen.
",
@@ -989,7 +991,7 @@
"enter_password_instruction": "Um die geschützte Notiz anzuzeigen, musst du dein Passwort eingeben:",
"start_session_button": "Starte eine geschützte Sitzung Eingabetaste",
"started": "Geschützte Sitzung gestartet.",
- "wrong_password": "Passwort flasch.",
+ "wrong_password": "Passwort falsch.",
"protecting-finished-successfully": "Geschützt erfolgreich beendet.",
"unprotecting-finished-successfully": "Ungeschützt erfolgreich beendet.",
"protecting-in-progress": "Schützen läuft: {{count}}",
@@ -1284,10 +1286,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI ist eine REST-API, die für den programmgesteuerten Zugriff auf die Trilium-Instanz ohne Benutzeroberfläche verwendet wird.",
- "see_more": "Weitere Details können im {{- link_to_wiki}} und in der {{- link_to_openapi_spec}} oder der {{- link_to_swagger_ui }} gefunden werden.",
- "wiki": "Wiki",
- "openapi_spec": "ETAPI OpenAPI-Spezifikation",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "Erstelle ein neues ETAPI-Token",
"existing_tokens": "Vorhandene Token",
"no_tokens_yet": "Es sind noch keine Token vorhanden. Klicke auf die Schaltfläche oben, um eine zu erstellen.",
@@ -1521,7 +1519,9 @@
"window-on-top": "Dieses Fenster immer oben halten"
},
"note_detail": {
- "could_not_find_typewidget": "Konnte typeWidget für Typ ‚{{type}}‘ nicht finden"
+ "could_not_find_typewidget": "Konnte typeWidget für Typ ‚{{type}}‘ nicht finden",
+ "printing": "Druckvorgang läuft…",
+ "printing_pdf": "PDF-Export läuft…"
},
"note_title": {
"placeholder": "Titel der Notiz hier eingeben…"
@@ -1654,7 +1654,7 @@
"add-term-to-dictionary": "Begriff \"{{term}}\" zum Wörterbuch hinzufügen",
"cut": "Ausschneiden",
"copy": "Kopieren",
- "copy-link": "Link opieren",
+ "copy-link": "Link kopieren",
"paste": "Einfügen",
"paste-as-plain-text": "Als unformatierten Text einfügen",
"search_online": "Suche nach \"{{term}}\" mit {{searchEngine}} starten"
@@ -2079,6 +2079,7 @@
},
"presentation_view": {
"edit-slide": "Folie bearbeiten",
- "start-presentation": "Präsentation starten"
+ "start-presentation": "Präsentation starten",
+ "slide-overview": "Übersicht der Folien ein-/ausblenden"
}
}
diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json
index 1949d3357..9f203eab3 100644
--- a/apps/client/src/translations/en/translation.json
+++ b/apps/client/src/translations/en/translation.json
@@ -104,7 +104,8 @@
"export_status": "Export status",
"export_in_progress": "Export in progress: {{progressCount}}",
"export_finished_successfully": "Export finished successfully.",
- "format_pdf": "PDF - for printing or sharing purposes."
+ "format_pdf": "PDF - for printing or sharing purposes.",
+ "share-format": "HTML for web publishing - uses the same theme that is used shared notes, but can be published as a static website."
},
"help": {
"title": "Cheatsheet",
@@ -260,7 +261,6 @@
"delete_all_revisions": "Delete all revisions of this note",
"delete_all_button": "Delete all revisions",
"help_title": "Help on Note Revisions",
- "revision_last_edited": "This revision was last edited on {{date}}",
"confirm_delete_all": "Do you want to delete all revisions of this note?",
"no_revisions": "No revisions for this note yet...",
"restore_button": "Restore",
@@ -1453,10 +1453,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI is a REST API used to access Trilium instance programmatically, without UI.",
- "see_more": "See more details in the {{- link_to_wiki}} and the {{- link_to_openapi_spec}} or the {{- link_to_swagger_ui }}.",
- "wiki": "wiki",
- "openapi_spec": "ETAPI OpenAPI spec",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "Create new ETAPI token",
"existing_tokens": "Existing tokens",
"no_tokens_yet": "There are no tokens yet. Click on the button above to create one.",
diff --git a/apps/client/src/translations/es/translation.json b/apps/client/src/translations/es/translation.json
index e07ce8036..b83fcf7bb 100644
--- a/apps/client/src/translations/es/translation.json
+++ b/apps/client/src/translations/es/translation.json
@@ -104,7 +104,8 @@
"export_status": "Estado de exportación",
"export_in_progress": "Exportación en curso: {{progressCount}}",
"export_finished_successfully": "La exportación finalizó exitosamente.",
- "format_pdf": "PDF - para propósitos de impresión o compartición."
+ "format_pdf": "PDF - para propósitos de impresión o compartición.",
+ "share-format": "HTML para publicación web: utiliza el mismo tema que se utiliza en las notas compartidas, pero se puede publicar como un sitio web estático."
},
"help": {
"noteNavigation": "Navegación de notas",
@@ -184,7 +185,8 @@
},
"import-status": "Estado de importación",
"in-progress": "Importación en progreso: {{progress}}",
- "successful": "Importación finalizada exitosamente."
+ "successful": "Importación finalizada exitosamente.",
+ "importZipRecommendation": "Al importar un archivo ZIP, la jerarquía de notas reflejará la estructura de subdirectorios dentro del archivo comprimido."
},
"include_note": {
"dialog_title": "Incluir nota",
@@ -259,7 +261,6 @@
"delete_all_revisions": "Eliminar todas las revisiones de esta nota",
"delete_all_button": "Eliminar todas las revisiones",
"help_title": "Ayuda sobre revisiones de notas",
- "revision_last_edited": "Esta revisión se editó por última vez en {{date}}",
"confirm_delete_all": "¿Quiere eliminar todas las revisiones de esta nota?",
"no_revisions": "Aún no hay revisiones para esta nota...",
"restore_button": "Restaurar",
@@ -1445,10 +1446,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI es una REST API que se utiliza para acceder a la instancia de Trilium mediante programación, sin interfaz de usuario.",
- "see_more": "Véa más detalles en el {{- link_to_wiki}} y el {{- link_to_openapi_spec}} o el {{- link_to_swagger_ui }}.",
- "wiki": "wiki",
- "openapi_spec": "Especificación ETAPI OpenAPI",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "Crear nuevo token ETAPI",
"existing_tokens": "Tokens existentes",
"no_tokens_yet": "Aún no hay tokens. Dé clic en el botón de arriba para crear uno.",
@@ -1715,7 +1712,9 @@
"window-on-top": "Mantener esta ventana en la parte superior"
},
"note_detail": {
- "could_not_find_typewidget": "No se pudo encontrar typeWidget para el tipo '{{type}}'"
+ "could_not_find_typewidget": "No se pudo encontrar typeWidget para el tipo '{{type}}'",
+ "printing": "Impresión en curso...",
+ "printing_pdf": "Exportando a PDF en curso.."
},
"note_title": {
"placeholder": "escriba el título de la nota aquí..."
diff --git a/apps/client/src/translations/fr/translation.json b/apps/client/src/translations/fr/translation.json
index 926307d18..1a4a1dec8 100644
--- a/apps/client/src/translations/fr/translation.json
+++ b/apps/client/src/translations/fr/translation.json
@@ -260,7 +260,6 @@
"delete_all_revisions": "Supprimer toutes les versions de cette note",
"delete_all_button": "Supprimer toutes les versions",
"help_title": "Aide sur les versions de notes",
- "revision_last_edited": "Cette version a été modifiée pour la dernière fois le {{date}}",
"confirm_delete_all": "Voulez-vous supprimer toutes les versions de cette note ?",
"no_revisions": "Aucune version pour cette note pour l'instant...",
"confirm_restore": "Voulez-vous restaurer cette version ? Le titre et le contenu actuels de la note seront écrasés par cette version.",
@@ -1289,8 +1288,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI est une API REST utilisée pour accéder à l'instance Trilium par programme, sans interface utilisateur.",
- "wiki": "wiki",
- "openapi_spec": "Spec ETAPI OpenAPI",
"create_token": "Créer un nouveau jeton ETAPI",
"existing_tokens": "Jetons existants",
"no_tokens_yet": "Il n'y a pas encore de jetons. Cliquez sur le bouton ci-dessus pour en créer un.",
@@ -1307,9 +1304,7 @@
"delete_token": "Supprimer/désactiver ce token",
"rename_token_title": "Renommer le jeton",
"rename_token_message": "Veuillez saisir le nom du nouveau jeton",
- "delete_token_confirmation": "Êtes-vous sûr de vouloir supprimer le jeton ETAPI « {{name}} » ?",
- "see_more": "Voir plus de détails dans le {{- link_to_wiki}} et le {{- link_to_openapi_spec}} ou le {{- link_to_swagger_ui }}.",
- "swagger_ui": "Interface utilisateur ETAPI Swagger"
+ "delete_token_confirmation": "Êtes-vous sûr de vouloir supprimer le jeton ETAPI « {{name}} » ?"
},
"options_widget": {
"options_status": "Statut des options",
diff --git a/apps/client/src/translations/hi/translation.json b/apps/client/src/translations/hi/translation.json
new file mode 100644
index 000000000..2d1c3b9f1
--- /dev/null
+++ b/apps/client/src/translations/hi/translation.json
@@ -0,0 +1,5 @@
+{
+ "about": {
+ "title": "ट्रिलियम नोट्स के बारें में"
+ }
+}
diff --git a/apps/client/src/translations/hu/translation.json b/apps/client/src/translations/hu/translation.json
index 0967ef424..042fbb281 100644
--- a/apps/client/src/translations/hu/translation.json
+++ b/apps/client/src/translations/hu/translation.json
@@ -1 +1,50 @@
-{}
+{
+ "about": {
+ "title": "A Trilium Notes-ról",
+ "homepage": "Kezdőlap:",
+ "app_version": "Alkalmazás verziója:",
+ "db_version": "Adatbázis verzió:",
+ "sync_version": "Verzió szinkronizálás :",
+ "build_revision": "Build revízió:",
+ "data_directory": "Adatkönyvtár:",
+ "build_date": "Build dátum:"
+ },
+ "toast": {
+ "critical-error": {
+ "title": "Kritikus hiba",
+ "message": "Kritikus hiba történt, amely megakadályozza a kliensalkalmazás indítását:\n\n{{message}}\n\nEzt valószínűleg egy váratlan szkripthiba okozza. Próbálja meg biztonságos módban elindítani az alkalmazást, és hárítsa el a problémát."
+ },
+ "widget-error": {
+ "title": "Nem sikerült inicializálni egy widgetet",
+ "message-custom": "A(z) \"{{id}}\" azonosítójú, \"{{title}}\" című jegyzetből származó egyéni widget inicializálása sikertelen volt a következő ok miatt:\n\n{{message}}",
+ "message-unknown": "Ismeretlen widget inicializálása sikertelen volt a következő ok miatt:\n\n{{message}}"
+ },
+ "bundle-error": {
+ "title": "Nem sikerült betölteni az egyéni szkriptet",
+ "message": "A(z) \"{{id}}\" azonosítójú, \"{{title}}\" című jegyzetből származó szkript nem hajtható végre a következő ok miatt:\n\n{{message}}"
+ }
+ },
+ "add_link": {
+ "add_link": "Link hozzáadása",
+ "help_on_links": "Segítség a linkekhez",
+ "note": "Jegyzet",
+ "search_note": "név szerinti jegyzetkeresés",
+ "link_title_mirrors": "A link cím tükrözi a jegyzet aktuális címét",
+ "link_title_arbitrary": "link cím önkényesen módosítható",
+ "link_title": "Link cím",
+ "button_add_link": "Link hozzáadása"
+ },
+ "branch_prefix": {
+ "edit_branch_prefix": "Az elágazás előtagjának szerkesztése",
+ "help_on_tree_prefix": "Segítség a fa előtagján",
+ "prefix": "Az előtag: ",
+ "save": "Mentés"
+ },
+ "bulk_actions": {
+ "bulk_actions": "Tömeges akciók",
+ "affected_notes": "Érintett jegyzetek",
+ "labels": "Címkék",
+ "relations": "Kapcsolatok",
+ "notes": "Jegyzetek"
+ }
+}
diff --git a/apps/client/src/translations/it/translation.json b/apps/client/src/translations/it/translation.json
index a49a9a5dc..5105b13f3 100644
--- a/apps/client/src/translations/it/translation.json
+++ b/apps/client/src/translations/it/translation.json
@@ -132,10 +132,6 @@
"new_token_message": "Inserisci il nome del nuovo token",
"title": "ETAPI",
"description": "ETAPI è un'API REST utilizzata per accedere alle istanze di Trilium in modo programmatico, senza interfaccia utente.",
- "see_more": "Per maggiori dettagli consulta {{- link_to_wiki}} e {{- link_to_openapi_spec}} o {{- link_to_swagger_ui}}.",
- "wiki": "wiki",
- "openapi_spec": "Specifiche ETAPI OpenAPI",
- "swagger_ui": "Interfaccia utente ETAPI Swagger",
"create_token": "Crea un nuovo token ETAPI",
"existing_tokens": "Token esistenti",
"no_tokens_yet": "Non ci sono ancora token. Clicca sul pulsante qui sopra per crearne uno.",
@@ -867,7 +863,6 @@
"delete_all_revisions": "Elimina tutte le revisioni di questa nota",
"delete_all_button": "Elimina tutte le revisioni",
"help_title": "Aiuto sulle revisioni delle note",
- "revision_last_edited": "Questa revisione è stata modificata l'ultima volta il {{date}}",
"confirm_delete_all": "Vuoi eliminare tutte le revisioni di questa nota?",
"no_revisions": "Ancora nessuna revisione per questa nota...",
"restore_button": "Ripristina",
diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json
index 1f81a4a4f..6a9b4f75e 100644
--- a/apps/client/src/translations/ja/translation.json
+++ b/apps/client/src/translations/ja/translation.json
@@ -254,7 +254,8 @@
"export_status": "エクスポート状況",
"export_in_progress": "エクスポート処理中: {{progressCount}}",
"export_finished_successfully": "エクスポートが正常に完了しました。",
- "format_pdf": "PDF - 印刷または共有目的に。"
+ "format_pdf": "PDF - 印刷または共有目的に。",
+ "share-format": "Web 公開用の HTML - 共有ノートで使用されるのと同じテーマを使用しますが、静的 Web サイトとして公開できます。"
},
"help": {
"title": "チートシート",
@@ -610,7 +611,6 @@
"delete_all_revisions": "このノートの変更履歴をすべて削除",
"delete_all_button": "変更履歴をすべて削除",
"help_title": "変更履歴のヘルプ",
- "revision_last_edited": "この変更は{{date}}に行われました",
"confirm_delete_all": "このノートのすべての変更履歴を削除しますか?",
"no_revisions": "このノートに変更履歴はまだありません...",
"restore_button": "復元",
@@ -657,10 +657,6 @@
"created": "作成日時",
"title": "ETAPI",
"description": "ETAPI は、Trilium インスタンスに UI なしでプログラム的にアクセスするための REST API です。",
- "see_more": "詳細は{{- link_to_wiki}}と{{- link_to_openapi_spec}}または{{- link_to_swagger_ui }}を参照してください。",
- "wiki": "wiki",
- "openapi_spec": "ETAPI OpenAPIの仕様",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "新しくETAPIトークンを作成",
"existing_tokens": "既存のトークン",
"no_tokens_yet": "トークンはまだありません。上のボタンをクリックして作成してください。",
diff --git a/apps/website/public/translations/ca/translation.json b/apps/client/src/translations/mr/translation.json
similarity index 100%
rename from apps/website/public/translations/ca/translation.json
rename to apps/client/src/translations/mr/translation.json
diff --git a/apps/client/src/translations/nl/translation.json b/apps/client/src/translations/nl/translation.json
index d07df69e5..de5cfb6c7 100644
--- a/apps/client/src/translations/nl/translation.json
+++ b/apps/client/src/translations/nl/translation.json
@@ -13,6 +13,13 @@
"critical-error": {
"title": "Kritische Error",
"message": "Een kritieke fout heeft plaatsgevonden waardoor de cliënt zich aanmeldt vanaf het begin:\n\n84X\n\nDit is waarschijnlijk veroorzaakt door een script dat op een onverwachte manier faalt. Probeer de sollicitatie in veilige modus te starten en de kwestie aan te spreken."
+ },
+ "widget-error": {
+ "title": "Starten widget mislukt",
+ "message-unknown": "Onbekende widget kan niet gestart worden omdat:\n\n{{message}}"
+ },
+ "bundle-error": {
+ "title": "Custom script laden mislukt"
}
},
"add_link": {
diff --git a/apps/client/src/translations/pl/translation.json b/apps/client/src/translations/pl/translation.json
index 1d90a30e8..6ff4b26f4 100644
--- a/apps/client/src/translations/pl/translation.json
+++ b/apps/client/src/translations/pl/translation.json
@@ -912,7 +912,6 @@
"delete_all_revisions": "Usuń wszystkie wersje tej notatki",
"delete_all_button": "Usuń wszystkie wersje",
"help_title": "Pomoc dotycząca wersji notatki",
- "revision_last_edited": "Ta wersja była ostatnio edytowana {{date}}",
"confirm_delete_all": "Czy chcesz usunąć wszystkie wersje tej notatki?",
"no_revisions": "Brak wersji dla tej notatki...",
"restore_button": "Przywróć",
@@ -1664,10 +1663,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI to interfejs API REST używany do programowego dostępu do instancji Trilium, bez interfejsu użytkownika.",
- "see_more": "Zobacz więcej szczegółów w {{- link_to_wiki}} oraz w {{- link_to_openapi_spec}} lub {{- link_to_swagger_ui }}.",
- "wiki": "wiki",
- "openapi_spec": "specyfikacja ETAPI OpenAPI",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "Utwórz nowy token ETAPI",
"existing_tokens": "Istniejące tokeny",
"no_tokens_yet": "Nie ma jeszcze żadnych tokenów. Kliknij przycisk powyżej, aby utworzyć jeden.",
diff --git a/apps/client/src/translations/pt/translation.json b/apps/client/src/translations/pt/translation.json
index b4b1366bb..5497ad817 100644
--- a/apps/client/src/translations/pt/translation.json
+++ b/apps/client/src/translations/pt/translation.json
@@ -259,7 +259,6 @@
"delete_all_revisions": "Apagar todas as versões desta nota",
"delete_all_button": "Apagar todas as versões",
"help_title": "Ajuda sobre as versões da nota",
- "revision_last_edited": "Esta versão foi editada pela última vez em {{date}}",
"confirm_delete_all": "Quer apagar todas as versões desta nota?",
"no_revisions": "Ainda não há versões para esta nota...",
"restore_button": "Recuperar",
@@ -1423,10 +1422,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI é uma API REST usada para aceder a instância do Trilium programaticamente, sem interface gráfica.",
- "see_more": "Veja mais pormenores no {{- link_to_wiki}}, na {{- link_to_openapi_spec}} ou na {{- link_to_swagger_ui}}.",
- "wiki": "wiki",
- "openapi_spec": "Especificação OpenAPI do ETAPI",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "Criar token ETAPI",
"existing_tokens": "Tokens existentes",
"no_tokens_yet": "Ainda não existem tokens. Clique no botão acima para criar um.",
diff --git a/apps/client/src/translations/pt_br/translation.json b/apps/client/src/translations/pt_br/translation.json
index 7c51d7c2a..0d1676832 100644
--- a/apps/client/src/translations/pt_br/translation.json
+++ b/apps/client/src/translations/pt_br/translation.json
@@ -415,7 +415,6 @@
"delete_all_revisions": "Excluir todas as versões desta nota",
"delete_all_button": "Excluir todas as versões",
"help_title": "Ajuda sobre as versões da nota",
- "revision_last_edited": "Esta versão foi editada pela última vez em {{date}}",
"confirm_delete_all": "Você quer excluir todas as versões desta nota?",
"no_revisions": "Ainda não há versões para esta nota...",
"restore_button": "Recuperar",
@@ -1933,10 +1932,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI é uma API REST usada para acessar a instância do Trilium programaticamente, sem interface gráfica.",
- "see_more": "Veja mais detalhes no {{- link_to_wiki}}, na {{- link_to_openapi_spec}} ou na {{- link_to_swagger_ui}}.",
- "wiki": "wiki",
- "openapi_spec": "Especificação OpenAPI do ETAPI",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "Criar novo token ETAPI",
"existing_tokens": "Tokens existentes",
"no_tokens_yet": "Ainda não existem tokens. Clique no botão acima para criar um.",
diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json
index f35d2ce89..dd8947003 100644
--- a/apps/client/src/translations/ro/translation.json
+++ b/apps/client/src/translations/ro/translation.json
@@ -507,17 +507,13 @@
"new_token_message": "Introduceți denumirea noului token",
"new_token_title": "Token ETAPI nou",
"no_tokens_yet": "Nu există încă token-uri. Clic pe butonul de deasupra pentru a crea una.",
- "openapi_spec": "Specificația OpenAPI pentru ETAPI",
- "swagger_ui": "UI-ul Swagger pentru ETAPI",
"rename_token": "Redenumește token-ul",
"rename_token_message": "Introduceți denumirea noului token",
"rename_token_title": "Redenumire token",
- "see_more": "Vedeți mai multe detalii în {{- link_to_wiki}} și în {{- link_to_openapi_spec}} sau în {{- link_to_swagger_ui }}.",
"title": "ETAPI",
"token_created_message": "Copiați token-ul creat în clipboard. Trilium stochează token-ul ca hash așadar această valoare poate fi văzută doar acum.",
"token_created_title": "Token ETAPI creat",
- "token_name": "Denumire token",
- "wiki": "wiki"
+ "token_name": "Denumire token"
},
"execute_script": {
"example_1": "De exemplu, pentru a adăuga un șir de caractere la titlul unei notițe, se poate folosi acest mic script:",
@@ -1090,7 +1086,6 @@
"preview_not_available": "Nu este disponibilă o previzualizare pentru acest tip de notiță.",
"restore_button": "Restaurează",
"revision_deleted": "Revizia notiței a fost ștearsă.",
- "revision_last_edited": "Revizia a fost ultima oară modificată pe {{date}}",
"revision_restored": "Revizia notiței a fost restaurată.",
"revisions_deleted": "Notița reviziei a fost ștearsă.",
"maximum_revisions": "Numărul maxim de revizii pentru notița curentă: {{number}}.",
diff --git a/apps/client/src/translations/ru/translation.json b/apps/client/src/translations/ru/translation.json
index 2dc068850..adc2bab50 100644
--- a/apps/client/src/translations/ru/translation.json
+++ b/apps/client/src/translations/ru/translation.json
@@ -320,7 +320,8 @@
"explodeArchivesTooltip": "Если этот флажок установлен, Trilium будет читать файлы .zip, .enex и .opml и создавать заметки из файлов внутри этих архивов. Если флажок не установлен, Trilium будет прикреплять сами архивы к заметке.",
"explodeArchives": "Прочитать содержимое архивов .zip, .enex и .opml.",
"shrinkImagesTooltip": "
Если этот параметр включен, Trilium попытается уменьшить размер импортируемых изображений путём масштабирования и оптимизации, что может повлиять на воспринимаемое качество изображения. Если этот параметр не установлен, изображения будут импортированы без изменений.
Это не относится к импорту файлов .zip с метаданными, поскольку предполагается, что эти файлы уже оптимизированы.
",
- "codeImportedAsCode": "Импортировать распознанные файлы кода (например, .json) в виде заметок типа \"код\", если это неясно из метаданных"
+ "codeImportedAsCode": "Импортировать распознанные файлы кода (например, .json) в виде заметок типа \"код\", если это неясно из метаданных",
+ "importZipRecommendation": "При импорте ZIP файла иерархия заметок будет отражена в структуре папок внутри архива."
},
"markdown_import": {
"dialog_title": "Импорт Markdown",
@@ -365,7 +366,6 @@
"delete_all_button": "Удалить все версии",
"help_title": "Помощь по версиям заметок",
"confirm_delete_all": "Вы хотите удалить все версии этой заметки?",
- "revision_last_edited": "Эта версия последний раз редактировалась {{date}}",
"confirm_restore": "Хотите восстановить эту версию? Текущее название и содержание заметки будут перезаписаны этой версией.",
"confirm_delete": "Вы хотите удалить эту версию?",
"revisions_deleted": "Версии заметки были удалены.",
@@ -980,7 +980,8 @@
"open_sql_console_history": "Открыть историю консоли SQL",
"show_shared_notes_subtree": "Поддерево общедоступных заметок",
"switch_to_mobile_version": "Перейти на мобильную версию",
- "switch_to_desktop_version": "Переключиться на версию для ПК"
+ "switch_to_desktop_version": "Переключиться на версию для ПК",
+ "new-version-available": "Доступно обновление"
},
"zpetne_odkazy": {
"backlink": "{{count}} ссылки",
@@ -1439,7 +1440,6 @@
},
"etapi": {
"title": "ETAPI",
- "wiki": "вики",
"created": "Создано",
"actions": "Действия",
"existing_tokens": "Существующие токены",
@@ -1447,10 +1447,7 @@
"default_token_name": "новый токен",
"rename_token_title": "Переименовать токен",
"description": "ETAPI — это REST API, используемый для программного доступа к экземпляру Trilium без пользовательского интерфейса.",
- "see_more": "Более подробную информацию смотрите в {{- link_to_wiki}} и {{- link_to_openapi_spec}} или {{- link_to_swagger_ui }}.",
"create_token": "Создать новый токен ETAPI",
- "openapi_spec": "Спецификация ETAPI OpenAPI",
- "swagger_ui": "Пользовательский интерфейс ETAPI Swagger",
"new_token_title": "Новый токен ETAPI",
"token_created_title": "Создан токен ETAPI",
"rename_token": "Переименовать этот токен",
diff --git a/apps/client/src/translations/sr/translation.json b/apps/client/src/translations/sr/translation.json
index dd0ff6ff9..df88fdcda 100644
--- a/apps/client/src/translations/sr/translation.json
+++ b/apps/client/src/translations/sr/translation.json
@@ -256,7 +256,6 @@
"delete_all_revisions": "Obriši sve revizije ove beleške",
"delete_all_button": "Obriši sve revizije",
"help_title": "Pomoć za Revizije beleški",
- "revision_last_edited": "Ova revizija je poslednji put izmenjena {{date}}",
"confirm_delete_all": "Da li želite da obrišete sve revizije ove beleške?",
"no_revisions": "Još uvek nema revizija za ovu belešku...",
"restore_button": "Vrati",
diff --git a/apps/client/src/translations/tw/translation.json b/apps/client/src/translations/tw/translation.json
index ea0e021e5..2ba0f9afd 100644
--- a/apps/client/src/translations/tw/translation.json
+++ b/apps/client/src/translations/tw/translation.json
@@ -104,7 +104,8 @@
"export_in_progress": "正在匯出:{{progressCount}}",
"export_finished_successfully": "成功匯出。",
"format_html": "HTML - 推薦,因為它保留了所有格式",
- "format_pdf": "PDF - 用於列印或與他人分享。"
+ "format_pdf": "PDF - 用於列印或與他人分享。",
+ "share-format": "HTML 網頁發佈——使用與共享筆記相同的佈景主題,但可發佈為靜態網站。"
},
"help": {
"noteNavigation": "筆記導航",
@@ -260,7 +261,6 @@
"delete_all_revisions": "刪除此筆記的所有歷史版本",
"delete_all_button": "刪除所有歷史版本",
"help_title": "關於筆記歷史版本的說明",
- "revision_last_edited": "此歷史版本上次於 {{date}} 編輯",
"confirm_delete_all": "您是否要刪除此筆記的所有歷史版本?",
"no_revisions": "此筆記暫無歷史版本…",
"confirm_restore": "您是否要還原此歷史版本?這將使用此歷史版本覆寫筆記的目前標題和內容。",
@@ -1281,8 +1281,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI 是一個 REST API,用於以編程方式訪問 Trilium 實例,而無需 UI。",
- "wiki": "維基",
- "openapi_spec": "ETAPI OpenAPI 規範",
"create_token": "新增 ETAPI 令牌",
"existing_tokens": "現有令牌",
"no_tokens_yet": "目前還沒有令牌。點擊上面的按鈕新增一個。",
@@ -1299,9 +1297,7 @@
"delete_token": "刪除 / 停用此令牌",
"rename_token_title": "重新命名令牌",
"rename_token_message": "請輸入新的令牌名稱",
- "delete_token_confirmation": "您確定要刪除 ETAPI 令牌 \"{{name}}\" 嗎?",
- "see_more": "有關更多詳細資訊,請參閱 {{- link_to_wiki}} 和 {{- link_to_openapi_spec}} 或 {{- link_to_swagger_ui}}。",
- "swagger_ui": "ETAPI Swagger UI"
+ "delete_token_confirmation": "您確定要刪除 ETAPI 令牌 \"{{name}}\" 嗎?"
},
"options_widget": {
"options_status": "選項狀態",
diff --git a/apps/client/src/translations/uk/translation.json b/apps/client/src/translations/uk/translation.json
index b35c6c826..ebddac41b 100644
--- a/apps/client/src/translations/uk/translation.json
+++ b/apps/client/src/translations/uk/translation.json
@@ -309,7 +309,6 @@
"delete_all_revisions": "Видалити всі версії цієї нотатки",
"delete_all_button": "Видалити всі версії",
"help_title": "Довідка щодо Версій нотаток",
- "revision_last_edited": "Цю версію востаннє редагували {{date}}",
"confirm_delete_all": "Ви хочете видалити всі версії цієї нотатки?",
"no_revisions": "Поки що немає версій цієї нотатки...",
"restore_button": "Відновити",
@@ -1403,10 +1402,6 @@
"etapi": {
"title": "ETAPI",
"description": "ETAPI — це REST API, який використовується для програмного доступу до екземпляра Trilium без інтерфейсу користувача.",
- "see_more": "Див. докладнішу інформацію у {{- link_to_wiki}} та {{- link_to_openapi_spec}} або {{- link_to_swagger_ui }}.",
- "wiki": "вікі",
- "openapi_spec": "ETAPI OpenAPI spec",
- "swagger_ui": "ETAPI Swagger UI",
"create_token": "Створити новий токен ETAPI",
"existing_tokens": "Існуючі токени",
"no_tokens_yet": "Токенів поки що немає. Натисніть кнопку вище, щоб створити його.",
diff --git a/apps/client/src/types.d.ts b/apps/client/src/types.d.ts
index c5a93bd0a..d283983b4 100644
--- a/apps/client/src/types.d.ts
+++ b/apps/client/src/types.d.ts
@@ -26,7 +26,6 @@ interface CustomGlobals {
appContext: AppContext;
froca: Froca;
treeCache: Froca;
- importMarkdownInline: () => Promise;
SEARCH_HELP_TEXT: string;
activeDialog: JQuery | null;
componentId: string;
diff --git a/apps/client/src/widgets/dialogs/export.tsx b/apps/client/src/widgets/dialogs/export.tsx
index dded32624..b694d9abe 100644
--- a/apps/client/src/widgets/dialogs/export.tsx
+++ b/apps/client/src/widgets/dialogs/export.tsx
@@ -79,6 +79,7 @@ export default function ExportDialog() {
values={[
{ value: "html", label: t("export.format_html_zip") },
{ value: "markdown", label: t("export.format_markdown") },
+ { value: "share", label: t("export.share-format") },
{ value: "opml", label: t("export.format_opml") }
]}
/>
diff --git a/apps/client/src/widgets/dialogs/markdown_import.tsx b/apps/client/src/widgets/dialogs/markdown_import.tsx
index d14d6fb11..43b20d378 100644
--- a/apps/client/src/widgets/dialogs/markdown_import.tsx
+++ b/apps/client/src/widgets/dialogs/markdown_import.tsx
@@ -7,6 +7,7 @@ import utils from "../../services/utils";
import Modal from "../react/Modal";
import Button from "../react/Button";
import { useTriliumEvent } from "../react/hooks";
+import EditableTextTypeWidget from "../type_widgets/editable_text";
interface RenderMarkdownResponse {
htmlContent: string;
@@ -14,39 +15,34 @@ interface RenderMarkdownResponse {
export default function MarkdownImportDialog() {
const markdownImportTextArea = useRef(null);
+ const [textTypeWidget, setTextTypeWidget] = useState();
const [ text, setText ] = useState("");
const [ shown, setShown ] = useState(false);
- const triggerImport = useCallback(() => {
- if (appContext.tabManager.getActiveContextNoteType() !== "text") {
- return;
- }
-
+ useTriliumEvent("showPasteMarkdownDialog", ({ textTypeWidget }) => {
+ setTextTypeWidget(textTypeWidget);
if (utils.isElectron()) {
const { clipboard } = utils.dynamicRequire("electron");
const text = clipboard.readText();
- convertMarkdownToHtml(text);
+ convertMarkdownToHtml(text, textTypeWidget);
} else {
setShown(true);
}
- }, []);
-
- useTriliumEvent("importMarkdownInline", triggerImport);
- useTriliumEvent("pasteMarkdownIntoText", triggerImport);
-
- async function sendForm() {
- await convertMarkdownToHtml(text);
- setText("");
- setShown(false);
- }
+ });
return (
}
+ footer={
-
+
When selecting the dropdown for the “Embedding Model”, embedding models
should be at the top of the list, separated by regular chat models with
a horizontal line, as seen below:
-
+
After selecting an embedding model, embeddings should automatically begin
to be generated by checking the embedding statistics at the top of the
“AI/LLM” settings panel:
-
+
If you don't see any embeddings being created, you will want to scroll
to the bottom of the settings, and hit “Recreate All Embeddings”:
-
+
Creating the embeddings will take some time, and will be regenerated when
a Note is created, updated, or deleted (removed).
When Tools are executed within your Chat, you'll see output like the following:
-
+
You don't need to tell the LLM to execute a certain tool, it should “smartly”
call tools and automatically execute them as needed.
@@ -149,13 +149,13 @@ class="image image_resized" style="width:74.04%;">
use the “Chat with Notes” button, where you can go ahead and start chatting!:
-
+
If you don't see the “Chat with Notes” button on your side launchbar,
you might need to move it from the “Available Launchers” section to the
“Visible Launchers” section:
-
+
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/1_AI Provider Information_im.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/1_Providers_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/1_AI Provider Information_im.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/1_Providers_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers.html
similarity index 81%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information.html
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers.html
index 963837bc1..acae3fe3c 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers.html
@@ -11,12 +11,12 @@
To set your preferred chat model, you'll want to enter the provider's
name here:
-
And to set your preferred embedding provider:
-
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Anthropic.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Anthropic.html
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Anthropic.html
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Anthropic.html
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/1_Installing Ollama_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/1_Installing Ollama_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/1_Installing Ollama_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/1_Installing Ollama_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/2_Installing Ollama_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/2_Installing Ollama_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/2_Installing Ollama_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/2_Installing Ollama_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/3_Installing Ollama_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/3_Installing Ollama_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/3_Installing Ollama_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/3_Installing Ollama_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/4_Installing Ollama_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/4_Installing Ollama_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/4_Installing Ollama_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/4_Installing Ollama_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/5_Installing Ollama_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/5_Installing Ollama_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/5_Installing Ollama_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/5_Installing Ollama_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/Installing Ollama.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/Installing Ollama.html
similarity index 98%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/Installing Ollama.html
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/Installing Ollama.html
index 39d9ee00d..fd417a2a7 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/AI Provider Information/Ollama/Installing Ollama.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/AI/Providers/Ollama/Installing Ollama.html
@@ -9,8 +9,8 @@ class="image image_resized" style="width:50.49%;">
width="785" height="498">
-
+
Task Manager also integrates with day notes -
- notes are cloned into day note to
- both todoDate note and doneDate note (with prefix of
- either "TODO" or "DONE").
+ notes are cloned into day note to both todoDate
+ note and doneDate note (with prefix of either
+ "TODO" or "DONE").
Implementation
New tasks are created in the TODO note which has ~child:templateTask template defines several promoted attributes -
todoDate, doneDate, tags, location. Importantly it also defines ~runOnAttributeChange relation
- event handler which is run on attribute
- change. This script handles when e.g.
- we fill out the doneDate attribute - meaning the task is done and should
- be moved to "Done" note and removed from TODO, locations and tags.
+ change. This script handles when e.g. we
+ fill out the doneDate attribute - meaning the task is done and should be
+ moved to "Done" note and removed from TODO, locations and tags.
New task button
There's also "button" note which contains simple script which adds a button
to create new note (task) in the TODO note.
In Trilium, attributes are key-value pairs assigned to notes, providing
additional metadata or functionality. There are two primary types of attributes:
Inheritance refers to the process of having a label or
- a relation shared across multiple
- notes, generally in parent-child relations (or anywhere if using templates).
+ a relation shared across multiple notes,
+ generally in parent-child relations (or anywhere if using templates).
Standard Inheritance
In Trilium, attributes can be automatically inherited by child notes if
they have the isInheritable flag set to true. This
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Labels.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Labels.html
index 0edc5714b..26fa692dc 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Labels.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Labels.html
@@ -1,5 +1,5 @@
-
A label is an attribute of a note
- which has a name and optionally a value.
+
A label is an attribute of a note which
+ has a name and optionally a value.
Common use cases
Metadata for personal use: Assign labels with optional
@@ -81,8 +81,7 @@
calendarRoot
Marks the note which should be used as root for Day Notes. Only one should be marked
- as such.
+ href="#root/_help_l0tKav7yLHGF">Day Notes. Only one should be marked as such.
Set to next, next-light, or next-dark to
use the corresponding TriliumNext theme (auto, light or dark) as the base
for a custom theme, instead of the legacy one. See Customize the Next theme for more
- information.
+ href="#root/_help_WFGzWeUK6arS">Customize the Next theme for more information.
A relation is similar to a label,
- but instead of having a text value it refers to another note.
+
A relation is similar to a label, but
+ instead of having a text value it refers to another note.
Common use cases
Metadata Relationships for personal use: For example,
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Bulk Actions.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Bulk Actions.html
index f505b9714..77fbbf031 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Bulk Actions.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Bulk Actions.html
@@ -1,6 +1,6 @@
-
+
The Bulk Actions dialog makes it easy to apply changes to multiple
notes at once, ranging from simple actions such as adding or removing a
@@ -8,8 +8,8 @@
Interaction
The first step is to select the notes in the Note Tree. It's possible to apply bulk
- actions to:
+ href="#root/_help_oPVyFC7WL2Lp">Note Tree. It's possible to apply bulk actions
+ to:
A single note (and potentially its child notes) simply by clicking on
it (with a left click or a right click).
@@ -53,17 +53,17 @@
Update label value
-
For each note, if it has a label of
- the given name, it will change its value to the specified one. Leave New value field
+
For each note, if it has a label of the
+ given name, it will change its value to the specified one. Leave New value field
empty to create a label without a value.
Notes without the label will not be affected.
Rename label
-
For each note, if it has a label of
- the given name, it will be renamed/replaced with a label of the new name.
- The value of the label (if present) will be kept intact.
+
For each note, if it has a label of the
+ given name, it will be renamed/replaced with a label of the new name. The
+ value of the label (if present) will be kept intact.
Notes without the label will not be affected.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance.html
index 35fc1d2b8..3b22c5f3a 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance.html
@@ -1,8 +1,8 @@
A Trilium instance represents a server. If Synchronization is set up, since
- multiple servers are involved (the one from the desktop client and the
- one the synchronisation is set up with), sometimes it can be useful to
- distinguish the instance you are running on.
+ href="#root/_help_cbkrhQjrkKrh">Synchronization is set up, since multiple
+ servers are involved (the one from the desktop client and the one the synchronisation
+ is set up with), sometimes it can be useful to distinguish the instance
+ you are running on.
Setting the instance name
To set up a name for the instance, modify the config.ini:
If you do not need to preserve any configurations that might be stored
in the config.ini file, you can just delete all of the data directory's contents
to fully restore the application to its original state. You can also review
- the configuration file to provide
- all config.ini values as environment variables instead.
\ No newline at end of file
+ the configuration file to provide all config.ini values
+ as environment variables instead.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/ETAPI (REST API).html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/ETAPI (REST API).html
index 693bdb39b..3a3c2fdf8 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/ETAPI (REST API).html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/ETAPI (REST API).html
@@ -1,6 +1,8 @@
+
ETAPI is Trilium's public/external REST API. It is available since Trilium
v0.50.
-
The documentation is in OpenAPI format, available here.
API clients
As an alternative to calling the API directly, there are client libraries
to simplify this
For easy extensibility, a lot of features in Trilium make use of actual
notes to store information as opposed to having them stored in a separate
@@ -8,14 +8,13 @@
href="#root/_help_zEY4DaJG4YT5">Attributes, Relations or even Search and Links to be able to operate on
- them.
+ href="#root/_help_QEAPj01N5f7w">Links to be able to operate on them.
As the name suggests, these notes are hidden to the user by default to
prevent cluttering the note tree and to prevent them from being accidentally
deleted.
The hidden notes are stored in the user's Database just like normal notes,
- but they have a unique Note ID which
+ href="#root/_help_wX4HbRucYSDD">Database just like normal notes, but
+ they have a unique Note ID which
allows them to be distinguished from the normal ones.
Accessing the hidden note tree
From the Global menu,
@@ -51,8 +50,8 @@ class="ck-table-resized">
When SQL queries or commands are executed in the SQL Console, they are stored here,
- grouped by month. Only the query is stored and not the results.
+ href="#root/_help_YKWqdJhzi2VY">SQL Console, they are stored here, grouped
+ by month. Only the query is stored and not the results.
This section can be accessed without going to the hidden tree by simply
going to the Global menu and
selecting Advanced → Open SQL Console History.
@@ -65,9 +64,8 @@ class="ck-table-resized">
Whenever a search is executed from the full Search, the query will be stored here,
- grouped by month. Only the search parameters are stored and not the results
- themselves.
+ href="#root/_help_eIg8jdvaoNNd">Search, the query will be stored here, grouped
+ by month. Only the search parameters are stored and not the results themselves.
This section can be accessed without going to the hidden tree by simply
going to the Global menu and
selecting Advanced → Open Search History.
You can also use the Grafana Dashboard that has been created for TriliumNext
- just take the JSON from grafana-dashboard.json and
then import the dashboard, following these screenshots:
-
+
Then paste the JSON, and hit load:
-
+
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map).html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map).html
index 828cb8c65..6640b63a7 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map).html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map).html
@@ -6,7 +6,16 @@
Note Map, which shows the hierarchical tree structure.
Text notes are
represented internally as HTML, using the CKEditor representation. Note
- that due to the custom plugins, some HTML elements are specific to Trilium
- only, for example the admonitions.
+ href="#root/_help_MI26XDLSAlCD">CKEditor representation. Note that due
+ to the custom plugins, some HTML elements are specific to Trilium only,
+ for example the admonitions.
Code notes are
plain text and are represented internally as-is.
Note that some information is also stored as Attachments. For example Canvas notes use the attachments
- feature to store the custom libraries, and alongside with Mind Map and other similar note
- types it stores an SVG representation of the content for use in other features
+ href="#root/_help_grjYqerjn243">Canvas notes use the attachments feature
+ to store the custom libraries, and alongside with Mind Map and other similar note types
+ it stores an SVG representation of the content for use in other features
such as including in other notes, shared notes, etc.
Here's part of the HTML representation of this note, as it's stored in
the database (but prettified).
<h2>
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html
index 95cae2d8d..af9f19b69 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html
@@ -3,8 +3,8 @@
from your Trilium notes, making it accessible to others online.
-
+
Some of these limitations may be addressed in future updates.
Prerequisites
To use the sharing feature, you must have a Server Installation of Trilium.
- This is necessary because the notes will be hosted from the server.
+ href="#root/_help_WOcw2SLH6tbX">Server Installation of Trilium. This
+ is necessary because the notes will be hosted from the server.
Sharing a note
@@ -186,7 +186,8 @@ class="image">
within the note's interface. Once sharing is enabled, an URL will appear,
which you can click to access the shared note.
-
+
@@ -207,9 +208,19 @@ class="image">
This allows you to manage and navigate through all the notes you have made
public.
Security considerations
-
Shared notes are published on the open internet and can be accessed by
- anyone with the URL. The URL's randomness does not provide security, so
- it is crucial not to share sensitive information through this feature.
+
+
Shared notes are published on the open internet and can be accessed by
+ anyone with the URL unless the notes are password-protected.
+
The URL's randomness does not provide security, so it is crucial not to
+ share sensitive information through this feature.
+
Trilium takes precautions to protect your publicly shared instance from
+ leaking information for non-shared notes, including opening a separate
+ read-only connection to the Database.
+ Depending on your threat model, it might make more sense to use
+ Exporting HTML for web publishing and use battle-tested web servers
+ such as Nginx or Apache to serve static content.
+
Password protection
To protect shared notes with a username and password, you can use the #shareCredentials attribute.
Add this label to the note with the format #shareCredentials="username:password".
@@ -220,10 +231,10 @@ class="image">
it using your own CSS:
Custom CSS: Link a CSS Code note to the shared page by
- adding a ~shareCss relation to the note. If you want this style
- to apply to the entire subtree, make the label inheritable. You can hide
- the CSS code note from the tree navigation by adding the #shareHiddenFromTree label.
+ href="#root/_help_6f9hih2hXXZk">Code note to the shared page by adding
+ a ~shareCss relation to the note. If you want this style to
+ apply to the entire subtree, make the label inheritable. You can hide the
+ CSS code note from the tree navigation by adding the #shareHiddenFromTree label.
To customize the favicon for your shared pages, create a relation ~shareFavicon pointing
to a file note containing the favicon (e.g., in .ico format).
@@ -299,7 +319,11 @@ for (const attr of parentNote.attributes) {
When viewed, the list of shared roots will be displayed at the bottom of
the note.
Attribute reference
-
+
+
+
+
+
Attribute
@@ -308,40 +332,40 @@ for (const attr of parentNote.attributes) {
-
shareHiddenFromTree
+
#shareHiddenFromTree
this note is hidden from left navigation tree, but still accessible with
its URL
-
shareExternalLink
+
#shareExternalLink
note will act as a link to an external website in the share tree
-
shareAlias
+
#shareAlias
define an alias using which the note will be available under https://your_trilium_host/share/[your_alias]
-
shareOmitDefaultCss
+
#shareOmitDefaultCss
default share page CSS will be omitted. Use when you make extensive styling
changes.
-
shareRoot
+
#shareRoot
marks note which is served on /share root.
-
shareDescription
+
#shareDescription
define text to be added to the HTML meta tag for description
-
shareRaw
+
#shareRaw
Note will be served in its raw format, without HTML wrapper. See also
-
shareDisallowRobotIndexing
+
#shareDisallowRobotIndexing
Indicates to web crawlers that the page should not be indexed of this
@@ -361,19 +385,19 @@ for (const attr of parentNote.attributes) {
-
shareCredentials
+
#shareCredentials
require credentials to access this shared note. Value is expected to be
in format username:password. Don't forget to make this inheritable
to apply to child-notes/images.
-
shareIndex
+
#shareIndex
Note with this label will list all roots of shared notes.
-
shareHtmlLocation
+
#shareHtmlLocation
defines where custom HTML injected via ~shareHtml relation
should be placed. Applied to the HTML snippet note itself. Format: location:position where
@@ -383,6 +407,76 @@ for (const attr of parentNote.attributes) {
+
Customizing logo
+
It's possible to adjust the logo which is displayed on the top-left of
+ the left pane.
+
+
+
+
Attribute
+
Description
+
+
+
+
+
~shareLogo
+
+
Relation set to an image to use as logo. The image must be part of the
+ share tree (it can be hidden if needed).
+
+
+
#shareLogoWidth
+
+
The width (in pixels, without unit) to set for the logo. Default is 53.
+
+
+
#shareLogoHeight
+
+
The height (in pixels, without unit) to set for the logo. Default is 40.
+
+
+
#shareRootLink
+
+
URL to navigate to when the logo is pressed.
+
+
+
+
+
Customizing OpenGraph
+
+
+
+
Attribute
+
Description
+
+
+
+
+
#shareOpenGraphColor
+
+
This adjusts the theme-color meta-property.
+
+
+
#shareOpenGraphURL
+
+
This adjusts the og:url and twitter:url meta-properties.
+
+
+
#shareOpenGraphDomain
+
+
Adjusts the twitter:domain meta-property.
+
+
+
#shareOpenGraphImage
+ ~shareOpenGraphImage
+
+
Can be either a label, case in which the value is passed on as-is, or
+ it can be a relation to an image File.
+ This controls the og:image meta-property.
+
+
+
+
Credits
Since v0.95.0, a new theme was introduced (and enabled by default) which
greatly improves the visual aspect of the Share feature, as well as its
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Exporting HTML for web publish.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Exporting HTML for web publish.html
new file mode 100644
index 000000000..2e8d0601f
--- /dev/null
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Exporting HTML for web publish.html
@@ -0,0 +1,58 @@
+
As described in Sharing,
+ Trilium can act as a public server in which the shared notes are displayed
+ in read-only mode. While this can work in most cases, it's generally not
+ meant for high-traffic websites and since it's running on a Node.js server
+ it can be potentially exploited.
+
Another alternative is to generate static HTML files (just like other
+ static site generators such as MkDocs).
+ Since the normal HTML ZIP export does not contain any styling or additional
+ functionality, Trilium provides a way to export the same layout and style
+ as the Sharing function
+ into static HTML files.
+
Apart from the enhanced security, these HTML files are also easy to deploy
+ on “serverless” deployments such as GitHub Pages or CloudFlare Pages and
+ cache very easily.
+
+
Differences from normal sharing
+
Apart from normal Sharing,
+ exporting to static HTML files comes with a few subtle differences:
+
+
The URL structure is different. Where in normal sharing it's something
+ along the way of example.com/share/noteid, the notes follow
+ an hierarchical structure, such as docs.triliumnotes.org/user-guide/concepts/navigation/tree-concepts.
+
The favicon.ico is not handled automatically, it needs to be
+ manually added on the server after the export is generated.
+
The “Last updated” for notes is not available.
+
The search functionality works slightly different since the normal one
+ requires an active API to work. In the static export, search still works
+ but uses a different mechanism so results might be different.
+
+
Differences from normal .zip export
+
+
The name of the files/URLs will prefer shareAlias to allow
+ for clean URLs.
+
The export requires a functional web server as the pages will not render
+ properly if accessed locally via a web browser due to the use of module
+ scripts.
+
+
Testing locally
+
As mentioned previously, the exported static pages require a website to
+ function. In order to test locally, a web server needs to be used.
+
One example is to use the Node.js-based http-server which
+ can be installed via:
ETAPI (REST API) could
+ potentially be used to automate an export on a scheduled task.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Reverse proxy configuration.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Reverse proxy configuration.html
new file mode 100644
index 000000000..5f1bafa0c
--- /dev/null
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Reverse proxy configuration.html
@@ -0,0 +1,18 @@
+
It might be desirable to only expose the share functionality of Trilium
+ to the Internet, and keep the application accessible only within a local
+ network or via VPN.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.html
index 78948ebf3..f324de4c8 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.html
@@ -1,5 +1,5 @@
Excalidraw is the technology behind
- the Canvas notes. The
- source code of the library is available on GitHub.
+ the Canvas notes. The source
+ code of the library is available on GitHub.
We are using an unmodified version of it, so it shares the same issues as
the original.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Templates.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Templates.html
index 4c91ffc9c..1eb044617 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Templates.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Templates.html
@@ -3,10 +3,10 @@
main effects:
Attribute Inheritance: All attributes from the template
- note are inherited by the instance
- notes. Even attributes with #isInheritable=false are inherited
- by the instance notes, although only inheritable attributes are further
- inherited by the children of the instance notes.
+ note are inherited by the instance notes.
+ Even attributes with #isInheritable=false are inherited by the
+ instance notes, although only inheritable attributes are further inherited
+ by the children of the instance notes.
Content Duplication: The content of the template note
is copied to the instance note, provided the instance note is empty at
the time of template assignment.
@@ -32,7 +32,8 @@
all attributes from the template are inherited.
To create an instance note through the UI:
-
+
For the template to appear in the menu, the template note must have the #template label.
Do not confuse this with the ~template relation, which links
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export.html
new file mode 100644
index 000000000..7bbfb1ab3
--- /dev/null
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export.html
@@ -0,0 +1,30 @@
+
Trilium natively supports the following formats for both import and export.
+
+
HTML:
+
+
This is the main format used by Trilium, where standard tags are used
+ to represent basic formatting and layout (e.g. <strong>, <table>, <pre>).
+
Note that HTML is not a standardized format so some more specific features
+ such as admonitions or Internal (reference) links might
+ not be supported by other applications.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to.html
index 2cc679ed8..6cb1b8ed8 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to.html
@@ -1,6 +1,6 @@
-
+
Jump to Note
@@ -34,8 +34,8 @@
Alternatively you can click on the "time" icon on the right.
Command Palette
-
+
The command palette is a feature which allows easy execution of various
commands that can be found throughout the application, such as from menus
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.html
index 201295288..25755eb69 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.html
@@ -5,7 +5,6 @@
In addition to showing only this subtree, this also narrows both full
- text search and “jump to note” to
- just notes present in hoisted subtree.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search.html
index 956b0e154..7f70624d7 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search.html
@@ -1,16 +1,16 @@
-
+
The Quick search function does a full-text search (that is, it
searches through the content of notes and not just the title of a note)
and displays the result in an easy-to-access manner.
The alternative to the quick search is the Search function, which opens in
- a dedicated tab and has support for advanced queries.
+ href="#root/_help_eIg8jdvaoNNd">Search function, which opens in a dedicated
+ tab and has support for advanced queries.
For even faster navigation, it's possible to use Jump to... which will only search
- through the note titles instead of the content.
+ href="#root/_help_F1r9QtzQLZqm">Jump to... which will only search through
+ the note titles instead of the content.
On the vertical layout, it is displayed right above the Note Tree.
On the horizontal layout, it is displayed in the Launch Bar, where it can be positioned
- just like any other icon.
+ href="#root/_help_xYmIYSP6wE3F">Launch Bar, where it can be positioned just
+ like any other icon.
Search Features
Quick search includes the following features:
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note.html
index 01091351f..06eb1130f 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note.html
@@ -1,6 +1,6 @@
-
+
Local search allows you to search within the currently displayed note.
Alternatives
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.html
index cddfc457e..5a93064e8 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.html
@@ -1,10 +1,10 @@
-
+
Note search enables you to find notes by searching for text in the title,
- content, or attributes of the notes.
- You also have the option to save your searches, which will create a special
+ content, or attributes of the notes. You
+ also have the option to save your searches, which will create a special
search note which is visible on your navigation tree and contains the search
results as sub-items.
Accessing the search
@@ -107,8 +107,8 @@
action multiple times (i.e. in order to be able to apply multiple labels
to notes).
The actions given are the same as the ones in Bulk Actions, which is an alternative
- for operating directly with notes within the Bulk Actions, which is an alternative for
+ operating directly with notes within the Note Tree.
After defining the actions, first press Search to check the matched
notes and then press Search & Execute actions to trigger the
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.html
index bce15f8d6..c15d61543 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.html
@@ -1,6 +1,6 @@
-
+
The Similar Notes feature tries to identify notes that relate to the current
note by looking at the content of the notes, their relationships, as well
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces.html
index a137bef13..6c17068e5 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces.html
@@ -6,8 +6,8 @@
So far workspace consists of these features:
-
note hoisting - you can "zoom" into
- a workspace subtree to focus only on the relevant notes
+
note hoisting - you can "zoom" into a
+ workspace subtree to focus only on the relevant notes
easy entering of workspace:
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes.html
index 1ec3fef9d..26efd0947 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes.html
@@ -2,10 +2,9 @@
and content.
Note types
The main note type is a rich-text note type called Text. For diagrams and drawing there
- is Canvas and
+ href="#root/_help_iPIMuisry3hd">Text. For diagrams and drawing there is
Mermaid Diagrams.
+ class="reference-link" href="#root/_help_grjYqerjn243">Canvas and Mermaid Diagrams.
There are also more complex note types such as Saved Search, Render Note that usually go hand-in-hand
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.html
index c07b654d0..537a7c70c 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.html
@@ -1,5 +1,5 @@
-
A note in Trilium can own one
- or more attachments, which can be either images or files. These attachments
+
A note in Trilium can own one or
+ more attachments, which can be either images or files. These attachments
can be displayed or linked within the note that owns them.
This can be especially useful to include dependencies for your scripts.
The Weight Tracker shows
@@ -21,8 +21,8 @@
For a single note, press the context menu from the Note buttons and select Convert into attachment.
For multiple notes, select the given notes in the Note Tree, right click → Advanced →
- Convert to attachment.
+ href="#root/_help_oPVyFC7WL2Lp">Note Tree, right click → Advanced → Convert
+ to attachment.
Attachment previews
Attachments share the same content preview for images, videos, PDFs, etc.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.html
index 54c380162..1b39f824b 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.html
@@ -5,8 +5,10 @@
the css class names is not necessary. While editing a note, click on the
icon next to the title to bring up a chooser gallery:
-
+
-
+
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List.html
index a20e3f16c..8c190e1d9 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Note List.html
@@ -1,6 +1,6 @@
-
+
When a note has one or more child notes, they will be listed at the end
of the note for easy navigation.
@@ -19,7 +19,6 @@
the notes will be displayed in a grid, however there are also some other
view types available.
Generally the view type can only be changed in a Collections note from the
- Ribbon, but it can also be changed manually on any type of note using
- the #viewType attribute.
\ No newline at end of file
+ href="#root/_help_GTwFsgaA0lCt">Collections note from the Ribbon, but it can also be changed manually
+ on any type of note using the #viewType attribute.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html
index 3104cac57..bf04b3afc 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html
@@ -4,6 +4,7 @@
Screenshot of the note contextual menu indicating the “Export as PDF”
option.
+
Printing
This feature allows printing of notes. It works on both the desktop client,
but also on the web.
@@ -26,7 +27,8 @@ class="admonition note">
report the issue. In this case, it's best to offer a sample note (click
on the
- button, select Export note → This note and all of its descendants → HTML
+ button, select Export note → This note and all of its descendants → HTML
in ZIP archive). Make sure not to accidentally leak any personal information.
Consider adjusting font sizes and using page breaks to
work around the layout.
When exporting to PDF, there are no customizable settings such as page
orientation, size. However, there are a few Attributes to adjust some of the
- settings:
+ href="#root/_help_zEY4DaJG4YT5">Attributes to adjust some of the settings:
-
To print in landscape mode instead of portrait (useful for big diagrams
+
To print in landscape mode instead of portrait (useful for big diagrams
or slides), add #printLandscape.
-
By default, the resulting PDF will be in Letter format. It is possible
+
By default, the resulting PDF will be in Letter format. It is possible
to adjust it to another page size via the #printPageSize attribute,
with one of the following values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.
@@ -75,9 +76,9 @@ class="admonition note">
href="#root/_help_4TIF1oA4VQRO">Options and assigning a key combination
for:
-
Print Active Note
+
Print Active Note
-
Export Active Note as PDF
+
Export Active Note as PDF
Constraints & limitations
@@ -85,24 +86,24 @@ class="admonition note">
supported when printing, in which case the Print and Export as PDF options
will be disabled.
Using Custom app-wide CSS for
printing is not longer supported, due to a more stable but isolated mechanism.
-
We plan to introduce a new mechanism specifically for a print CSS.
+
We plan to introduce a new mechanism specifically for a print CSS.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.html
index f5d5c0cf4..3855e2b97 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.html
@@ -6,8 +6,8 @@
Encryption: Protected notes are encrypted using a key
derived from your password. This ensures that without the correct password,
protected notes remain indecipherable. Even if someone gains access to
- your Trilium database, they won't
- be able to read your encrypted notes.
+ your Trilium database, they won't be able
+ to read your encrypted notes.
Time-limited access: To access protected notes, you must
first enter your password, which decrypts the note for reading and writing.
However, after a specified period of inactivity (10 minutes by default),
@@ -30,7 +30,8 @@
By default, notes are unprotected. To protect a note, simply click on
the shield icon next to the note's title, as shown here:
-
+
What is Encrypted?
Trilium encrypts the data within protected notes but not their metadata.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html
index b56e502b8..5216611cb 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.html
@@ -11,10 +11,9 @@
of the next section.
In addition, it's possible to change the number of characters at which
the automatic read-only mode will trigger in Options by going to the options
- for Text Notes and
+ href="#root/_help_4TIF1oA4VQRO">Options by going to the options for
Code Notes.
+ class="reference-link" href="#root/_hidden/_options/_help__optionsTextNotes">Text Notes and Code Notes.
Changing a note's read-only behavior
Via the Ribbon,
by going to the Basic Properties tab and looking for the Editable selection.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.html
index f1348efcb..0ba164a49 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.html
@@ -1,7 +1,7 @@
Manual sorting
You can sort notes by right-clicking the parent note in the Note Tree and selecting Advanced
- -> Sort notes by ... This will sort existing notes, but will not automatically
+ href="#root/_help_oPVyFC7WL2Lp">Note Tree and selecting Advanced ->
+ Sort notes by ... This will sort existing notes, but will not automatically
sort future notes added to this parent note.
The sorting dialog allows:
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons.html
index c432d5ae5..736708d22 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons.html
@@ -1,6 +1,6 @@
-
+
Depending on the current note, a panel will appear near the top-right
of the note, right underneath the Ribbon.
@@ -13,8 +13,8 @@
class="reference-link" href="#root/_help_grjYqerjn243">Canvas, there are buttons to download the SVG representation of the
note, or to copy a reference to the note for pasting it a Text note.
-
For read-only notes, there is a
- button to temporarily edit the note for quick modifications.
+
For read-only notes, there is a button
+ to temporarily edit the note for quick modifications.
Interaction
The floating button area can be collapsed by pressing the two right arrows
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.html
index 6908b39bd..89ff2ac4e 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.html
@@ -36,8 +36,8 @@
Similarly, to remove it from the launch bar, simply look for it in Visible Launchers then
right click it and select Move to available launchers or use drag-and-drop.
Drag-and-drop the items in the tree in order to change their
- order. See Note Tree for
- more interaction options, including using keyboard shortcuts.
+ order. See Note Tree for more
+ interaction options, including using keyboard shortcuts.
Customizing the launcher
The icon of a launcher can be changed just like a normal note. See
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip.html
index 3500d6134..387a6de34 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip.html
@@ -1,10 +1,10 @@
-
+
The note tooltip is a convenience feature which displays a popup when
- hovering over an internal link to
- another note.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.html
index 32b54240f..058459da7 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.html
@@ -5,13 +5,15 @@
Drag and Drop
-
+
You can easily rearrange the note tree by dragging and dropping notes,
as demonstrated in the example above.
Keyboard Manipulation
- Trilium offers efficient keyboard-based manipulation using the following
+ Trilium offers efficient keyboard-based manipulation using the following
shortcuts:
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu.html
index a00568d7a..250fb7e14 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu.html
@@ -10,8 +10,7 @@
On a single note, by right clicking it in the note tree.
On multiple notes, by selecting them first. See Multiple selection on how to do
- so.
+ href="#root/_help_yTjUdsOi4CIE">Multiple selection on how to do so.
When right clicking, do note that usually the note being right clicked
is also included in the affected notes, regardless of whether it was selected
@@ -81,9 +80,9 @@
Use one of the two paste functions (or the keyboard shortcuts) to copy
them to the desired location.
Note that the copy function here works according to the Cloning Notes functionality (i.e.
- the note itself will be present in two locations at once, and editing it
- in one place will edit it everywhere).
+ href="#root/_help_IakOLONlIfGI">Cloning Notes functionality (i.e. the
+ note itself will be present in two locations at once, and editing it in
+ one place will edit it everywhere).
To simply create a duplicate note that can be modified independently,
look for Duplicate subtree.
@@ -145,8 +144,8 @@
Import into note
-
Opens the import dialog and places
- the imported notes as child notes of the selected one.
+
Opens the import dialog and places the
+ imported notes as child notes of the selected one.
Export
@@ -191,8 +190,8 @@
Converts the selected notes to Attachments of
their parent notes.
This functional is most useful when dealing with image File notes that were imported
- from an external source or an older version of Trilium.
+ href="#root/_help_W8vYD3Q1zjCR">File notes that were imported from an
+ external source or an older version of Trilium.
Expand subtree
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.html
index a45f1009c..8c49439ec 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.html
@@ -1,14 +1,13 @@
-
+
The Options section allows the configuration of the TriliumNext client
and server.
The
button in the Launch Bar which
can optionally be hidden if not desirable.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Quick edit.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Quick edit.html
index 4e5dd7b77..e251b45fa 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Quick edit.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Quick edit.html
@@ -1,18 +1,18 @@
-
+
Quick edit provides an alternative to the standard tab-based navigation
and editing.
Instead of clicking on a note which switches the Note Tree to the newly selected
- note, or navigating between two different Tabs, the Quick edit feature
- opens as a popup window that can be easily dismissed.
+ href="#root/_help_oPVyFC7WL2Lp">Note Tree to the newly selected note,
+ or navigating between two different Tabs,
+ the Quick edit feature opens as a popup window that can be easily
+ dismissed.
This feature is also well integrated with Collections such as the calendar
- view, which makes it easy to edit entries without having to go back and
- forth between the child note and the calendar.
+ href="#root/_help_GTwFsgaA0lCt">Collections such as the calendar view,
+ which makes it easy to edit entries without having to go back and forth
+ between the child note and the calendar.
If there is a hoisted note or a
- workspace, the list of recent changes will be limited to the descendents
- of the hoisted note, or the workspace.
+
If there is a hoisted note or a workspace,
+ the list of recent changes will be limited to the descendents of the hoisted
+ note, or the workspace.
To limit the list of recent changes to a note and its descendants, look
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.html
index 31b5908d9..96db62c4b 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.html
@@ -24,28 +24,27 @@
Protect the note toggles whether the current
note is encrypted and accessible only by entering the protected session.
- See Protected Notes for
- more information.
Template toggles whether the current note is
considered a template and can be used to easily create notes with the same
- content. See Template for
- more information.
The type of the note, as well as
- its MIME type (used mostly for exporting notes).
+
The type of the note, as well as its MIME
+ type (used mostly for exporting notes).
The created and modification dates.
The estimated size of the note in the Database,
as well as its children count and size.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar.html
index f3e1b9aee..88f2b3be8 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar.html
@@ -1,6 +1,6 @@
-
+
The right sidebar displays specific content for the current note. Currently
it includes:
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.html
index 45eac8857..8d9b0ad58 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.html
@@ -1,6 +1,6 @@
-
+
In Trilium, tabs allow easy switching between notes.
Layout
@@ -9,8 +9,8 @@
For the vertical layout, the tabs will be placed at the top but to the
right of the Note Tree.
For the horizontal layout, the tabs will be placed at the top in full-width,
- above the note tree, allowing
- for more tabs to be comfortably displayed.
+ above the note tree, allowing for
+ more tabs to be comfortably displayed.
Interaction
@@ -19,8 +19,8 @@
To close a tab, press the corresponding
button.
For multitasking, tabs can be used alongside Split View. Each tab can have one or
- more notes, displayed horizontally.
+ href="#root/_help_luNhaphA37EO">Split View. Each tab can have one or more
+ notes, displayed horizontally.
Tabs can be reordered by drag-and-dropping it into a new position.
An existing tab can be displayed in a new window by dragging the tab upwards
or downwards. It is not possible to combine tabs back into another window.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom.html
index e69de29bb..b056e6fda 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom.html
@@ -0,0 +1,8 @@
+
Zoom applies to the entire UI, including text.
+
On the desktop application, use the Global menu to
+ zoom in/out.
+
On both web browser and the desktop, the keyboard shortcuts Ctrl+Shift++ and Ctrl+Shift+- can
+ be used.
+
Adjusting the text size instead
+
As an alternative to the zoom, the text size can be individually adjusted
+ by going to Options → Appearance.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections.html
similarity index 54%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections.html
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections.html
index 0c06f1279..fa40dcfbd 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections.html
@@ -1,5 +1,76 @@
Collections are a unique type of notes that don't have a content, but
instead display its child notes in various presentation methods.
+
Main collections
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Calendar
+ which displays a week, month or year calendar with the notes being shown
+ as events. New events can be added easily by dragging across the calendar.
+
+
+
+
+
+
+
+
Table
+ displays each note as a row in a table, with Promoted Attributes being shown as well.
+ This makes it easy to visualize attributes of notes, as well as making
+ them easily editable.
+
+
+
+
+
+
+
+
Kanban Board
+ displays notes in columns, grouped by the value of a label. Items and
+ columns can easily be created or dragged around to change their status.
+
+
+
+
+
+
+
+
Geo Map
+ which displays a geographical map in which the notes are represented as
+ markers/pins on the map. New events can be easily added by pointing on
+ the map.
+
+
+
+
+
+
+
+
Presentation
+ which shows each note as a slide and can be presented full-screen with
+ smooth transitions or exported to PDF for sharing.
+
+
+
+
+
Classic collections
Classic collections are read-only mode and compiles the contents of all
child notes into one continuous view. This makes it ideal for reading extensive
information broken into smaller, manageable segments.
@@ -13,32 +84,22 @@
but it displays the notes one under the other with the content being expandable/collapsible,
but also works recursively.
-
More specialized collections were introduced, such as the:
-
-
Calendar View which
- displays a week, month or year calendar with the notes being shown as events.
- New events can be added easily by dragging across the calendar.
-
Geo Map View which
- displays a geographical map in which the notes are represented as markers/pins
- on the map. New events can be easily added by pointing on the map.
-
Table View displays
- each note as a row in a table, with Promoted Attributes being
- shown as well. This makes it easy to visualize attributes of notes, as
- well as making them easily editable.
-
Board View (Kanban)
- displays notes in columns, grouped by the value of a label.
-
-
For a quick presentation of all the supported view types, see the child
- notes of this help page, including screenshots.
-
Configuration
-
To adjust the view type, see the dedicated Collections tab in the
- Ribbon.
-
Use cases
-
Creating a new collection
+
Creating a new collection
To create a new collections, right click in the Note Tree and look for the Collections entry
and select the desired type.
+
Configuration
+
To change the configuration of a collection or even switch to a different
+ collection (e.g. from Kanban Board to a Calendar), see the dedicated Collections tab
+ in the Ribbon.
+
Archived notes
+
By default, archived notes will not be
+ shown in collections. This behaviour can be changed by going to Collection Properties in
+ the Ribbon and
+ checking Show archived notes.
+
Archived notes will be generally indicated by being greyed out as opposed
+ to the normal ones.
+
Advanced use cases
Adding a description to a collection
To add a text before the collection, for example to describe it:
@@ -54,8 +115,8 @@
to display notes all across the tree, with advanced querying functionality.
To do so, simply start a Search and
go to the Collection Properties tab in the Ribbon and select a desired type
- of collection. To keep the search-based collection, use a Ribbon and select a desired type of
+ collection. To keep the search-based collection, use a Saved Search.
-
Archived notes
-
By default, archived notes will not be shown in collections. This behaviour
- can be changed by going to Collection Properties in the
- Ribbon and checking Show archived notes.
-
Archived notes will be generally indicated by being greyed out as opposed
- to the normal ones.
Under the hood
Collections by themselves are simply notes with no content that rely on
the Note List mechanism
(the one that lists the children notes at the bottom of a note) to display
information.
By default, new collections use predefined Templates that are stored safely
- in the Hidden Notes to
+ href="#root/_help_KC1HB96bqqHX">Templates that are stored safely in
+ the Hidden Notes to
define some basic configuration such as the type of view, but also some
Promoted Attributes to make editing easier.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/10_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/10_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/10_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/10_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/10_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/10_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/10_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/10_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/11_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/11_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/11_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/11_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/11_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/11_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/11_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/11_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/12_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/12_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/12_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/12_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/13_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/13_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/13_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/13_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/14_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/14_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/14_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/14_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/15_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/15_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/15_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/15_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/16_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/16_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/16_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/16_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/17_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/17_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/17_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/17_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/18_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/18_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/18_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/18_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/1_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/1_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/1_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/1_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/1_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/1_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/1_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/1_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/1_Presentation View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/1_Presentation_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/1_Presentation View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/1_Presentation_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/2_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/2_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/2_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/2_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/2_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/2_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/2_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/2_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/3_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/3_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/3_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/3_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/3_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/3_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/3_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/3_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/4_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/4_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/4_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/4_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/4_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/4_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/4_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/4_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/5_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/5_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/5_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/5_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/5_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/5_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/5_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/5_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/6_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/6_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/6_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/6_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/6_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/6_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/6_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/6_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/7_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/7_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/7_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/7_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/7_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/7_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/7_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/7_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/8_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/8_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/8_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/8_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/8_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/8_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/8_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/8_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/9_Calendar View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/9_Calendar_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/9_Calendar View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/9_Calendar_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/9_Geo Map View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/9_Geo Map_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/9_Geo Map View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/9_Geo Map_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Calendar View.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html
similarity index 94%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Calendar View.html
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html
index eaefc470d..160cee491 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Calendar View.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html
@@ -1,6 +1,6 @@
-
+
The Calendar view will display each child note in a calendar that has
a start date and optionally an end date, as an event.
@@ -30,7 +30,7 @@
1
-
+
The Calendar View works only for Collection note types. To create a new
note, right click on the note tree on the left and select Insert note after,
@@ -39,7 +39,7 @@
2
-
+
Once created, the “View type” of the Collection needs changed to “Calendar”,
by selecting the “Collection Properties” tab in the ribbon.
@@ -59,7 +59,7 @@
It's possible to drag across multiple days to set both the start and end
date of a particular note.
-
+
Creating new notes from the calendar will respect the ~child:template relation
if set on the Collection note.
@@ -68,7 +68,7 @@
Hovering the mouse over an event will display information about the note.
-
+
Left clicking the event will open a Quick edit to
edit the note in a popup while allowing easy return to the calendar by
@@ -209,7 +209,7 @@
like this:
The calendar displays all the child notes of the Collection that have
a #startDate. An #endDate can optionally be added.
@@ -259,7 +259,7 @@
#hidePromotedAttributes
This will result in:
-
+
When not used in a Journal, the calendar is recursive. That is, it will
look for events not just in its child notes but also in the children of
@@ -283,7 +283,8 @@
not having a dateNote attribute. Children of the child notes
will not be displayed.
-
+
Using a different attribute as event title
By default, events are displayed on the calendar by their note title.
@@ -308,8 +309,8 @@
-
+
@@ -334,7 +335,8 @@
#startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"
This note type displays the children notes on a geographical map, based
on an attribute. It is also possible to add new notes at a specific location
@@ -25,8 +25,8 @@
1
-
+
Right click on any note on the note tree and select Insert child note → Geo Map (beta).
@@ -35,8 +35,8 @@
2
-
+
By default the map will be empty and will show the entire world.
@@ -67,18 +67,18 @@
1
To create a marker, first navigate to the desired point on the map. Then
press the
- button in the Floating buttons (top-right)
+ button in the Floating buttons (top-right)
area.
If the button is not visible, make sure the button section is visible
by pressing the chevron button (
- ) in the top-right of the map.
+ ) in the top-right of the map.
2
-
Once pressed, the map will enter in the insert mode, as illustrated by
@@ -90,7 +90,7 @@
3
-
Enter the name of the marker/note to be created.
@@ -98,7 +98,7 @@
4
-
Once confirmed, the marker will show up on the map and it will also be
@@ -136,8 +136,8 @@
How the location of the markers is stored
The location of a marker is stored in the #geolocation attribute
of the child notes:
-
+
This value can be added manually if needed. The value of the attribute
is made up of the latitude and longitude separated by a comma.
Repositioning markers
@@ -191,8 +191,8 @@ height="278">
Icon and color of the markers
-
+
The markers will have the same icon as the note.
It's possible to add a custom color to a marker by assigning them a #color attribute
@@ -216,8 +216,8 @@ height="278">
1
-
+
Go to Google Maps on the web and look for a desired location, right click
@@ -233,8 +233,8 @@ height="278">
2
-
+
In Trilium, create a child note under the map.
@@ -243,8 +243,8 @@ height="278">
3
-
+
And then go to Owned Attributes and type #geolocation=", then
@@ -269,7 +269,7 @@ height="278">
1
-
Go to any location on openstreetmap.org and right click to bring up the
@@ -278,7 +278,7 @@ height="278">
2
-
The address will be visible in the top-left of the screen, in the place
@@ -289,7 +289,7 @@ height="278">
3
-
Simply paste the value inside the text box into the #geolocation attribute
@@ -313,8 +313,8 @@ height="278">
1
-
+
To add a track, simply drag & drop a .gpx file inside the geo map
@@ -324,8 +324,8 @@ height="278">
2
-
+
In order for the file to be recognized as a GPS track, it needs to show
@@ -335,8 +335,8 @@ height="278">
3
-
+
When going back to the map, the track should now be visible.
@@ -400,8 +400,8 @@ height="278">
of the scale of the map.
This view presents the child notes in a grid format, allowing for a more
visual navigation experience.
@@ -24,7 +24,7 @@
displayed instead.
The grid view is also used by default in the Note List of every note, making
- it easy to navigate to children notes.
+ href="#root/_help_0ESUbbAxVnoK">Note List of every note, making it easy
+ to navigate to children notes.
Configuration
Unlike most other view types, the grid view is not actually configurable.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Grid View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Grid View_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Grid View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Grid View_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Kanban Board.html
similarity index 93%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Kanban Board.html
index 922171f0d..e4a92ba49 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Kanban Board.html
@@ -1,6 +1,6 @@
-
+
The Board view presents sub-notes in columns for a Kanban-like experience.
Each column represents a possible value for a status label, which can be
@@ -11,9 +11,9 @@
then groups each note by the value of the status attribute.
Notes are displayed recursively, so even the child notes of the child
notes will be displayed. However, unlike the Table View, the notes are not displayed
- in a hierarchy.
-
Interaction with columns
+ href="#root/_help_2FvYrpmOXm29">Table, the notes are not displayed in a hierarchy.
+
Interaction
+
Working with columns
Create a new column by pressing Add Column near the last column.
@@ -33,7 +33,7 @@
If there are many columns, use the mouse wheel to scroll.
-
Interaction with notes
+
Working with notes
Create a new note in any column by pressing New item
@@ -91,7 +91,6 @@ class="admonition note">
It's currently not possible to set a relation as the grouping criteria.
There are plans to add support for it.
-
Interaction
Limitations
It is not possible yet to use group by a relation, only by label.
List view is similar to Grid View,
but in the list view mode, each note is displayed in a single row with
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/List View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/List View_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/List View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/List View_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Presentation View.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Presentation.html
similarity index 81%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Presentation View.html
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Presentation.html
index ca888c9cf..50ce146f0 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Presentation View.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Presentation.html
@@ -1,5 +1,5 @@
-
The Presentation view allows the creation of slideshows directly from
@@ -52,7 +52,7 @@
scheme.
-
All direct children of the collection will be laid out horizontally. If
@@ -86,8 +86,8 @@
looking for the Collection Properties tab.
It's currently not possible to create custom themes, although it is planned.
Note that it is note possible to alter the CSS via Custom app-wide CSS because the
- slides are rendered isolated (in a shadow DOM).
+ href="#root/_help_AlhDUqhENtH7">Custom app-wide CSS because the slides
+ are rendered isolated (in a shadow DOM).
At slide level:
@@ -105,29 +105,29 @@
and background colors) and font size. Code blocks and tables also work.
Try using more than just text notes, the presentation uses the same mechanism
as shared notes and Note List so it should be able
- to display Mermaid Diagrams,
+ href="#root/_help_0ESUbbAxVnoK">Note List so it should be able to display
Canvas and Mind Map in
- full-screen (without the interactivity).
-
-
-
Consider using a transparent background for Canvas, if the slides have a custom
- background (go to the hamburger menu in the Canvas, press the button select
- a custom color and write transparent).
-
-
-
For Mermaid Diagrams,
- some of them have a predefined background which can be changed via the
- frontmatter. For example, for XY-charts:
---
+ class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams, Canvas and
+ Mind Map in full-screen (without the interactivity).
+
+
+
Consider using a transparent background for Canvas, if the slides have a custom background
+ (go to the hamburger menu in the Canvas, press the button select a custom
+ color and write transparent).
+
+
+
For Mermaid Diagrams,
+ some of them have a predefined background which can be changed via the
+ frontmatter. For example, for XY-charts:
+ href="#root/_help_OFXdgB2nNk1F">Promoted Attributes to the Saved Search note.
Editing is also supported.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Table View_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Table_image.png
similarity index 100%
rename from apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Table View_image.png
rename to apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Table_image.png
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_bo.webp b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_bo.webp
new file mode 100644
index 000000000..6ed49dd44
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_bo.webp differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ca.webp b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ca.webp
new file mode 100644
index 000000000..34b7961e0
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ca.webp differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ge.webp b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ge.webp
new file mode 100644
index 000000000..e564fbfc6
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ge.webp differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_pr.webp b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_pr.webp
new file mode 100644
index 000000000..f7ae75cc3
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_pr.webp differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ta.webp b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ta.webp
new file mode 100644
index 000000000..2113caf65
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections_collection_ta.webp differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/FAQ.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/FAQ.html
index 96a987809..ad3ee3976 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/FAQ.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/FAQ.html
@@ -1,3 +1,17 @@
+
Inspiration for the name “Trilium”
+
+
Naming software is hard. I lived in Ontario when I first started the project
+ and Trillium (the flower) is sort of a provincial logo, many institutions
+ in Ontario are named "Trillium [something]". So I kept hearing/reading
+ it almost everyday, I liked the sound of it and its nature motif, so I
+ just reused it.
+
– Zadam (original Trilium maintainer)
+
+
+
macOS support
Originally, Trilium Notes considered the macOS build unsupported. TriliumNext
commits to make the experience on macOS as good as possible.
@@ -26,13 +40,14 @@
How to open multiple documents in one Trilium instance
This is normally not supported - one Trilium process can open only a single
- instance of a database. However,
- you can run two Trilium processes (from one installation), each connected
- to a separate document. To achieve this, you need to set a location for
- the data directory in the TRILIUM_DATA_DIR environment
- variable and separate port on TRILIUM_PORT environment variable.
- How to do that depends on the platform, in Unix-based systems you can achieve
- that by running command such as this:
+ instance of a database. However, you can
+ run two Trilium processes (from one installation), each connected to a
+ separate document. To achieve this, you need to set a location for the
+ data directoryin the TRILIUM_DATA_DIR environment variable
+ and separate port on TRILIUM_PORT environment variable. How
+ to do that depends on the platform, in Unix-based systems you can achieve
+ that by running command such as this:
You can save this command into a .sh script file or make an
alias. Do this similarly for a second instance with different data directory
and port.
@@ -54,9 +69,8 @@
with probably more problems.
More detailed answer:
-
clones are what you might call "hard
- directory link" in filesystem lingo, but this concept is not implemented
- in any filesystem
+
clones are what you might call "hard directory
+ link" in filesystem lingo, but this concept is not implemented in any filesystem
filesystems make a distinction between directory and file while there's
intentionally no such difference in Trilium
files are stored in no particular order and user can't change this
@@ -76,8 +90,9 @@
Trilium uses a progressive search strategy that includes fuzzy matching
when exact matches return fewer than 5 results. This finds notes despite
minor typos in your search query. You can use fuzzy search operators (~= for
- fuzzy exact match and ~* for fuzzy contains). See the Search documentation for details.
+ fuzzy exact match and ~* for fuzzy contains). See the
+ Search documentation for details.
How can I search for notes when I'm not sure of the exact spelling?
A more friendly theme was introduced for Sharing, with search, expandable tree,
- night mode and more.
+ href="#root/_help_R9pX4DGra2Vt">Sharing, with search, expandable tree, night
+ mode and more.
v0.94.0:
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html
index 457914ff2..de085dcc8 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html
@@ -12,17 +12,17 @@
by default in backup directory placed in the data directory.
This is only very basic backup solution, and you're encouraged to add
some better backup solution - e.g. backing up the Database to cloud / different
- computer etc.
+ href="#root/_help_wX4HbRucYSDD">Database to cloud / different computer
+ etc.
Note that Synchronization provides
also some backup capabilities by its nature of distributing the data to
other computers.
Restoring backup
Let's assume you want to restore the weekly backup, here's how to do it:
-
find data directory Trilium uses
- - easy way is to open "About Trilium Notes" from "Menu" in upper left corner
- and looking at "data directory"
+
find data directory Trilium uses - easy
+ way is to open "About Trilium Notes" from "Menu" in upper left corner and
+ looking at "data directory"
I'll refer to ~/trilium-data as data directory from now on
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation.html
index 5ce56d645..b213daf6e 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation.html
@@ -21,8 +21,8 @@
trilium-portable: Launches Trilium in portable mode, where
- the data directory is created within
- the application's directory, making it easy to move the entire setup.
+ the data directory is created within the
+ application's directory, making it easy to move the entire setup.
trilium-safe-mode: Boots Trilium in "safe mode," disabling
any startup scripts that might cause the application to crash.
Both Intel and Apple Silicon devices are supported.
+
+
+
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application .html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application .html
index 133c93d13..225d1183a 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application .html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application .html
@@ -12,8 +12,8 @@ class="admonition note">
Mobile interface
By default, this will display the desktop user interface, even on mobile.
To switch to the mobile version, simply go to the Global menu and select “Switch
- to the mobile version”.
+ href="#root/_help_x3i7MxGccDuM">Global menu and select “Switch to the
+ mobile version”.
Allowing the port externally on Windows with Windows Defender Firewall
First, find out the IP of your desktop server by running ipconfig in
your local terminal. Then try accessing http://<ip>:37840/login on
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html
index afecd5fb1..5d994dac2 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html
@@ -1,7 +1,7 @@
-
Trilium (server edition) has a
- mobile web frontend which is optimized for touch based devices - smartphones
- and tablets. It is activated automatically during login process based on
- browser detection.
+
Trilium (server edition) has a mobile
+ web frontend which is optimized for touch based devices - smartphones and
+ tablets. It is activated automatically during login process based on browser
+ detection.
Mobile frontend is limited in features compared to full desktop frontend.
See below for more details on this.
Note that this is not an Android/iOS app, this is just mobile friendly
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html
index c1fcde150..0c34a40ae 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html
@@ -27,8 +27,8 @@
After setting up your server installation, you may want to configure settings
such as the port or enable TLS. Configuration
is managed via the Trilium config.ini file, which is located
- in the data directory by default.
- To begin customizing your setup, copy the provided config-sample.ini file
+ in the data directory by default. To begin
+ customizing your setup, copy the provided config-sample.ini file
with default values to config.ini.
You can also review the configuration file
to provide all config.ini values as environment variables instead.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually.html
index 53a0a5cd6..fbc6913c2 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually.html
@@ -39,5 +39,5 @@ nohup TRILIUM_ENV=dev node src/www &
browser and navigate to http://localhost:8080 to
access Trilium (replace "localhost" with your hostname).
TLS
-
Don't forget to configure TLS which
- is required for secure usage!
\ No newline at end of file
+
Don't forget to configure TLS which is
+ required for secure usage!
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux.html
index 52566a4a0..726c89f2c 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux.html
@@ -163,5 +163,5 @@ echo "Cleanup complete. Trilium updated to $LATEST_VERSION."
If you get an error like this, you need to either upgrade your glibc (typically
by upgrading to up-to-date distribution version) or use some other server installation method.
TLS
-
Don't forget to configure TLS, which
- is required for secure usage!
\ No newline at end of file
+
Don't forget to configure TLS, which is
+ required for secure usage!
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Authentication.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Authentication.html
index 55a085b4b..b8d074e7d 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Authentication.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Authentication.html
@@ -4,8 +4,7 @@
by adding the following to config.ini:
+ href="#root/_help_7DAiwaf8Z7Rz">Multi-Factor Authentication since v0.94.1.
Understanding how the session works
Once logged into Trilium, the application will store this information
about the login into a cookie on the browser, but also as a session on
@@ -22,10 +21,9 @@ cookieMaxAge=86400
the last interaction with the application.
Viewing active sessions
The login sessions are now stored in the same Database as the user data. In
- order to view which sessions are active, open the SQL Console and run the following
- query:
SELECT * FROM sessions
+ href="#root/_help_wX4HbRucYSDD">Database as the user data. In order
+ to view which sessions are active, open the SQL Console and run the following query:
SELECT * FROM sessions
Expired sessions are periodically cleaned by the server, generally an
hourly interval.
Once you have your certificate, modify the config.ini file
- in the data directory to configure
- Trilium to use it:
[Network]
+ in the data directory to configure Trilium
+ to use it:
[Network]
port=8080
# Set to true for TLS/SSL/HTTPS (secure), false for HTTP (insecure).
https=true
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/System Requirements.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/System Requirements.html
new file mode 100644
index 000000000..fa53b6404
--- /dev/null
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/System Requirements.html
@@ -0,0 +1,16 @@
+
+
Using Docker, the server can be run on Windows, Linux and macOS devices.
+
Native binaries are provided for Linux x64 and ARM (aarch64).
+
+
Legacy ARM support
+
The Docker builds also provide linux/arm/v7 and linux/arm/v8 platforms.
+ These platforms are considered legacy since Trilium uses Node.js version
+ 24 which have officially downgraded support for
+ these platforms to “experimental”.
+
As a result, Trilium needs to use Node.js 22 for these versions. As soon
+ as soon Node.js 22 will no longer be compatible, support for armv7 and armv8 will
+ be dropped entirely.
+
Regardless of upstream support, these platforms are supported on a best-effort
+ basis and are not officially supported by the Trilium development team.
+ Bug reports are accepted but they will not be treated with priority; contributions
+ are welcome.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Third-party cloud hosting.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Third-party cloud hosting.html
new file mode 100644
index 000000000..63c7458f1
--- /dev/null
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/Third-party cloud hosting.html
@@ -0,0 +1,37 @@
+
As an alternative to hosting your own Trilium instance,
+ there are two services out there that provide out of the box support for
+ Trilium.
In the “Available Apps” section, look for "TriliumNext
+ and select “Run your own”.
+
Follow the on-screen instructions to set up your own cloud hosted instance.
+
+
PikaPods generally updates their Trilium instances to the latest version
+ within a two-week interval after a new version is released.
+
trilium.cc
+
Trilium.cc is a cloud service dedicated
+ to hosting a Trilium instance.
+
+
Matching your version with the cloud instance
+
Please note that once you set up Synchronization between
+ a cloud instance and desktop clients, it's
+ important that the version of the desktop application and the server match
+ up.
+
When setting up a cloud instance, it's best to check the version of the
+ server by accessing it via a web browser and going to the About section.
+ It's best that both the desktop and the server have the same App version;
+ however it's generally OK to update the desktop to a newer version than
+ the server if it has the same Sync version.
+
If the Sync version between the server and the desktop application
+ doesn't match, synchronization will not work.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html
index d277c52e8..068a2b4d1 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html
@@ -12,9 +12,9 @@
Setting Up Synchronization
Security Considerations
Setting up the server securely is critical and can be complex. It is crucial
- to use a valid TLS certificate (HTTPS)
- rather than an unencrypted HTTP connection to ensure security and avoid
- potential vulnerabilities.
+ to use a valid TLS certificate (HTTPS) rather
+ than an unencrypted HTTP connection to ensure security and avoid potential
+ vulnerabilities.
Synchronizing a Desktop Instance with a Sync Server
This method is used when you already have a desktop instance of Trilium
and want to set up a sync server on your web host.
@@ -26,7 +26,8 @@
instance address" to your sync server's address. Click Save.
-
+
Testing Sync: Click the "Test sync" button to verify
@@ -45,7 +46,8 @@
to set up sync with a sync server.
-
+
Server Details: Configure the Trilium server address
@@ -54,7 +56,8 @@
you will see the following screen:
-
+
Once synchronization is complete, you will be automatically redirected
to the Trilium application.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Upgrading TriliumNext.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Upgrading TriliumNext.html
index 36d1cb7e4..f8836997f 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Upgrading TriliumNext.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Upgrading TriliumNext.html
@@ -18,8 +18,8 @@
of Trilium and its database, you can restore the backup that
is created prior to migration.
Sync Compatibility
-
The synchronization protocol used
- by Trilium is versioned, requiring all members of the sync cluster to use
- the same protocol version. Therefore, when upgrading to a new version,
- you may need to upgrade all instances in the sync cluster. Changes to the
- sync protocol version are typically indicated on the release page.
\ No newline at end of file
+
The synchronization protocol used by Trilium
+ is versioned, requiring all members of the sync cluster to use the same
+ protocol version. Therefore, when upgrading to a new version, you may need
+ to upgrade all instances in the sync cluster. Changes to the sync protocol
+ version are typically indicated on the release page.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html
index 64c7b080a..9d16f0ed7 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html
@@ -17,8 +17,8 @@
Trilium will save these clippings as a new child note under a "clipper
inbox" note.
-
By default, that's the day note but
- you can override that by setting the labelclipperInbox,
+
By default, that's the day note but you
+ can override that by setting the labelclipperInbox,
on any other note.
If there's multiple clippings from the same page (and on the same day),
then they will be added to the same note.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Patterns of personal knowl.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Patterns of personal knowl.png
new file mode 100644
index 000000000..39788216a
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Patterns of personal knowl.png differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Patterns of personal knowledge.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Patterns of personal knowledge.html
new file mode 100644
index 000000000..ccd2e90df
--- /dev/null
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Patterns of personal knowledge.html
@@ -0,0 +1,301 @@
+
+
This page contains description of some of the patterns I use to organize
+ information in my knowledge base. This is meant to give some inspiration
+ of how one might create and structure their knowledge base in general and
+ also specifically in Trilium Notes. It also gives some background and justification
+ for some of the design decisions.
+
Meta patterns
+
Just to be clear, meta patterns are "patterns of patterns", i.e. patterns
+ appearing in other patterns.
+
Hierarchical organization of information
+
Basic meta pattern is that I sort notes (units of information) into a
+ hierarchy - I have some "top level" notes which represent coarse grained
+ organization, these then split into sub-notes defining finer grained organization
+ and so on. I consider this hierarchical (tree) organization very efficient
+ for organization of large amounts of information. A lot of note taking
+ software (such as Evernote) are frustratingly limited in this regard which
+ limits scalability of the software to large amounts of notes.
+
Scalability
+
It's important to frame the following (meta) patterns with some idea of
+ how large amount of data are we talking about.
+
My rule of thumb for estimation of size of personal knowledge base is
+ that you can reasonably produce around 10 notes a day, which is 3650 in
+ a year. I plan to use my knowledge base long term (with or without Trilium
+ Notes), probably decades so you can easily get to number 100 000 or even
+ more. Right now, my personal knowledge base has around 10 000 notes.
+
100 000 is a number to which most note taking software doesn't scale well
+ (in both performance and UI). Yet I don't think it's really very much considering
+ a lifetime of knowledge.
+
Lazy hierarchy
+
My approach to creating the hierarchy is being lazy - I don't create the
+ structure first and then fill it with notes, instead I create single note
+ for some specific topic and start using this one note. Once the content
+ starts to grow, and I see how some parts could be split out, I move
+ them out into separate sub notes. As an example I have a book review for The Fellowship of the Ring:
+
+
Book reviews
+
+
The Fellowship of the Ring
+
+
+
+
The note contains basic book info (author, publisher etc.), book highlights
+ with the comments and then overall review. Now it turns out there's far
+ too many book highlights and overall review is also rather long, so I want
+ to change the structure to the following:
+
+
Book reviews
+
+
The Fellowship of the Ring (still contains basic info)
+
+
Highlights
+
Review
+
+
+
+
+
+
If I used standard text file stored in a filesystem I would soon run into
+ an annoying problem that in order to split out the Highlights and Review
+ into sub-notes I would also have to convert The Fellowship of the Ring from
+ text file into directory and split out all sections of the note into sub-notes.
+ Instead, Trilium treats all notes as equal - both leaf notes and inner
+ notes can have both text content which allows me to sub-structure only
+ content which needs it.
+
Sorting notes into multiple places in the hierarchy
+
While organizing the notes into the hierarchy, you very quickly run into
+ a dilemma - your note seem to belong to two places in the hierarchy equally.
+ As an example - you want to make a note about bash -
+ does it belong to "OS / Linux" or "Programming / Scripting languages"?
+ This is actually a false dichotomy forced down by the limits of the basic
+ tree hierarchy - the answer is of course it belongs to both. This
+ is the reason why Trilium doesn't use standard tree structure (which requires
+ every note to have exactly one parent), but an extension which allows every
+ note to have several parents, thus effectively allowing it to appear in
+ multiple places in the hierarchy. For lack of better term I call this "cloning".
+ The main problem with this term is that it suggests that each clone must
+ have an original, but here all clones are completely equal - effectively
+ there's no original.
+
In tech lingo, it might be better to describe it as a hard link with
+ an important difference that it is possible to hard link (clone) a directory
+ (inner note).
+
Protected notes
+
I have Trilium Notes opened non-stop. Sometimes I forget to lock my computer
+ when going to the bathroom. Sometimes I let a friend or family member to
+ use my computer for a minute without supervision. They might click on (running)
+ Trilium and inadvertently see a note I really don't want anybody to see
+ (personal diary, credentials). To cover this, Trilium has a concept of
+ "protected notes"
+ - protected note is encrypted and on top of that requires the user to enter
+ the password every 5 minutes which guarantees that such note can be in
+ a readable state only for small amount of time. Working with ordinary (not
+ protected) notes don't require password so you're not bothered by extra
+ security when it's not needed.
+
Archiving notes
+
Notes can lose relevancy with time - let's say I switch jobs - all the
+ notes specific to the former employer immediately lose most of its import.
+ This doesn't mean I want to delete these notes though - typically I just
+ want them to somehow deprioritize - in Trilium I would do that by assigning
+ an inherited
+ labelarchived to the company root note. The main effect
+ of this label is that all the notes from this sub-tree are filtered out
+ from search results (fast search via note autocomplete is my main navigation approach).
+ Apart from this, I also typically move such outdated notes to some less
+ prominent place in the hierarchy.
+
I use archivation also for notes which are not very relevant from their
+ creation - an example might be automatically imported reddit comments.
+
Sometimes there's no clear category split between relevant and
+ non-relevant notes, in that case I just create "OLD" note with archived label
+ and move all irrelevant notes there. So my credentials note might look
+ something like this:
+
+
Credentials
+
+
Personal
+
+
OLD (contains a bunch of notes with credentials for services I don't use anymore)
+
+
Gmail
+
Github
+
...
+
+
+
+
+
+
Patterns
+
Day note
+
Every day has its note which contains or references everything related
+ to the given day. Structure looks like this:
+
+
2018
+
+
11 - November
+
+
26 - Monday
+
27 - Tuesday
+
+
subnote 1
+
+
+
+
+
+
+
+
Day note serves as a workspace and note inbox at the same time - it's
+ the default location to create a note when I don't have time to think about
+ proper placement. At the end of the day I typically review my day note
+ and clone the notes into suitable locations in the hierarchy.
+
Trilium has this pattern partly built-in - Trilium understands and can
+ create this Year / Month / Day structure semi-automatically (on API call).
+ There's also global keyboard shortcut CTRL-ALT-P which will
+ create new note in the day note.
+
What notes do I keep under this day note?
+
+
TODO list for given day (this can be automated - see Task Manager)
+
Personal diary
+
clones of notes I created during this
+ day (which kind of represents what I've been working on).
+
I often clone notes (or sub-trees) of e.g. projects I'm working on at
+ given day so they are at hand
+
I have some scripts which allow me to track
+ certain daily metrics (like weight). These are saved into one daily "data
+ note" (actually JSON code note).
+
+
I have other scripts which then help me to visualize these data (see a
+ Weight Tracker example)
+
I have a script which automatically imports all my comments from reddit
+ into the day note.
+
+
People are sometimes wondering why. The answer is that I usually put some
+ effort and thought into a comment and that's why I feel it's worth preserving,
+ especially if it can be done automatically.
+
+
+
+
+
+
For most notes, this day note placement is secondary and their
+ primary location is somewhere else (e.g. for a book review I've been working
+ on it's Book / Reviews, not the day note). So for this pattern
+ to work, ability to clone notes into multiple
+ places is pretty fundamental.
+
Projects
+
Project is pretty self-explanatory, for me specifically it also
+ means being long term (years) - an example of a project might be Trilium
+ Notes or university studies. Given their longevity, projects can be large
+ and deep, but their structure is very domain specific, and I don't see
+ any common patterns. What's pretty clear is they are often widely interconnected
+ with other parts of the knowledge base - e.g. university credentials are
+ cloned from "Credentials / University" top level notes and Trilium related
+ blog posts are in "Blog / [Name of the blog] / Trilium".
+
Epics are the same thing as projects, but differ in scope - they
+ are typically several months long and as such are usually placed into a
+ year note (e.g. 2018 / Epics). Epics are often of work nature (also
+ cloned into work note) and personal (e.g. currently I have large epic for
+ moving to a different city).
+
I don't have a term for short term projects (typically several days long),
+ but continuing the scrum analogy I might call them story. These
+ are often placed directly into day notes and manually moved from one day
+ to another (or place into a month note, e.g. 2018 / 11 - November).
+
Credentials
+
I keep all my credentials in the knowledge base, they are sorted into
+ categories - work related, project related, personal per country etc. These
+ notes are of course protected and are often
+ cloned into other places (e.g. project credentials are cloned into the
+ project itself). This is a pretty important advantage compared to traditional
+ tools like KeePass - all the relevant information is centralized into one
+ place without compromising security.
+
People profiles
+
This might seem creepy to some, but I keep a profile on most people. It
+ contains pretty standard things like date of birth, contacts, address,
+ but also current and previous employments, their hobbies and worldviews
+ and sometimes even important (IM/mail/meatspace) conversations. Just about
+ everything I find notable. It helps to refresh some basic info before meeting
+ people, especially if you haven't been in touch in a while. It gets pretty
+ awkward to ask for the tenth time where do they work for example, because
+ you keep forgetting it.
+
Naturally I have a lot of (extended) family members, friends, acquaintances
+ etc. so I need some way to sort them. My main method is to sort them by
+ social circle (work, high school, sports club etc.), sometimes also by
+ their town of residence. Family circle is still too large so the
+ further organization is by clan (as in "Smiths"). Some people are
+ members of several such circles, so they are just cloned into multiple
+ places.
+
For family specifically it's pretty useful to create relation map to
+ visualize relationships:
Of course, I keep standard "To read" list. I also keep a record on the
+ books I've read - typically one book has one subtree where the root has
+ some basic info like author, page count, publication date, date started,
+ date finished (in the form of Promoted Attributes).
+ I also write a (private) review and keep list of highlights from Kindle,
+ optionally with some commentary, these are usually stored in sub notes
+ (unless they are pretty short).
+
To keep the list of books manageable, I sort them per year (of reading
+ them), this also gives me some basic overview of "reading performance"
+ for given year. I plan to create a script which
+ would show some timeline chart visualizing book attributes dateStarted - dateFinished to
+ have nicer view of my reading sprints and trends.
+
Some specific authors also have their own note which contains cloned book
+ reviews, links to interviews and other related resources.
+
I have similar system for movies and TV shows, but not as sophisticated.
+
Personal diary
+
This is a place to reflect on events, experiences, new findings etc. This
+ can help you get deeper understanding of your inner self, clarify your
+ thinking and make better decisions as a result.
+
I sort personal diary notes directly under day note (explained
+ above), but it can be cloned also to e.g. "trip note" (if the diary note
+ is about given trip) or to person's profile (if the person plays a role
+ in the diary note). All my diary notes are protected since
+ they are usually pretty sensitive.
+
Documents
+
I keep all my personal documents (ID, passport, education certificates
+ ...) scanned in the knowledge base. They are synchronized across
+ every PC which provides decent backup and makes them available everywhere.
+
Advantage compared to e.g. keeping them in Dropbox or Google Drive is
+ that they are not stored on some 3rd party server and they can be encrypted
+ (protected).
+
Inventory
+
Inventory contains documents and other relevant importation for my important
+ belongings - e.g. for car you can keep the registration card, maintenance
+ record, related costs etc. I also keep inventory for some items personally
+ important to me - mainly computers, phones, cameras and similar electronics.
+ This can be practical at times but also provides sentimental value.
+
Topic knowledge base
+
This where I store hard "knowledge" - summarized topics and findings from
+ different domains. Topics can range from traditional sciences - physics,
+ history, economy to philosophy, mental models, apps (notes about specific
+ apps I use) etc. Of course this is very subjective - given what I do, my
+ Physics sub-tree is pretty sparse compared to my Programming subtree.
+
Work knowledge base
+
I usually keep top level note for the company I currently work at (past
+ jobs are moved elsewhere). I track basic organization of the company (divisions,
+ business units), who is who (relation maps)
+ are again useful for visualization), projects I work at etc.
+
There's a number of credentials to various company services I need to
+ use. Companies usually have a bunch of complex processes and tools. I record
+ meeting minutes, link to the company wiki (which is usually difficult to
+ find relevant info). In general there's a lot of company specific information
+ I need to know or need have them at hand in a nice structure I can understand.
+ Often it's just copy pasting and reshuffling of existing information into
+ something more understandable for me.
+
From my experience, keeping this makes me more productive and even more
+ importantly dramatically reduces frustration and stress.
+
Conclusion
+
I could probably go on with more patterns (e.g. study notes, travelling),
+ but I think you get the idea. Whatever is important in your life, it probably
+ makes sense to document and track it.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Privacy Policy.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Privacy Policy.html
new file mode 100644
index 000000000..8f81ba26e
--- /dev/null
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Miscellaneous/Privacy Policy.html
@@ -0,0 +1,20 @@
+
Trilium Notes
+
Trilium Notes does not collect/send any data from the user's installation,
+ i.e. no analytics, no telemetry etc. The data flows only between user controlled
+ / installed applications, without any intermediary.
+
Automatic network activity consists of:
+
+
Trilium periodically queries URL https://github.com/TriliumNext/Trilium/releases to
+ see if there's a new stable version released. (check only, there's no automatic
+ download and/or installation).
+
Trilium will download spelling dictionaries automatically as needed based
+ on language settings
+
+
Trilium Web Clipper
+
Trilium Web Clipper does not collect/send any data from the user's installation,
+ i.e. no analytics, no telemetry etc. The data flows only between user controlled
+ / installed applications, without any intermediary.
+
Trilium Sender for Android
+
Trilium Sender for Android does not collect/send any data from the user's
+ installation, i.e. no analytics, no telemetry etc. The data flows only
+ between user controlled / installed applications, without any intermediary.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types.html
index 0d1b2c0fd..9c69cade3 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types.html
@@ -18,17 +18,16 @@
Creating a new note of a different type via add link or new tab
When adding a link in a Text note, type the desired title
- of the new note and press Enter. Afterwards the type of the note will be
- asked.
+ href="#root/_help_iPIMuisry3hd">Text note, type the desired title of
+ the new note and press Enter. Afterwards the type of the note will be asked.
Similarly, when creating a new tab, type the desired title and press Enter.
Changing the type of a note
It is possible to change the type of a note after it has been created
via the Basic Properties tab in the Ribbon. Note that it's generally a
- good idea to change the note type only if the note is empty. Can also be
- used to edit the source of a note.
+ href="#root/_help_BlN9DFI679QC">Ribbon. Note that it's generally a good idea
+ to change the note type only if the note is empty. Can also be used to
+ edit the source of a note.
Supported note types
The following note types are supported by Trilium:
Video files can be added in as well. The file is streamed directly, so
when accessing the note from a server it doesn't have to download the entire
@@ -54,14 +55,14 @@
to be used with very large files. Uploading large videos will cause the
Database to balloon as well as the any Backup of it. In addition to that,
- there might be slowdowns when first uploading the files. Otherwise, a large
- database should not impact the general performance of Trilium significantly.
+ href="#root/_help_ODY7qQn5m2FT">Backup of it. In addition to that, there
+ might be slowdowns when first uploading the files. Otherwise, a large database
+ should not impact the general performance of Trilium significantly.
Audio
-
+
Adding a supported audio file will reveal a basic audio player that can
be used to play it.
@@ -76,8 +77,8 @@
Text files
-
+
Files that are identified as containing text will show a preview of their
content. One common use case for this type of file is to embed text files
@@ -95,8 +96,8 @@
application.
Unknown file types
-
+
If the file could not be identified as any of the supported file types
from above, it will be treated as an unknown file. In this case, all the
@@ -114,9 +115,7 @@
It is not possible to change the note type of a File note.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html
index 44850ab53..3699a257b 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html
@@ -1,3 +1,7 @@
+
@@ -6,7 +10,6 @@
as flowchart, sequence diagram, class diagram, state diagram, pie charts,
etc., all using a text description of the chart instead of manually drawing
the diagram.
-
An existing note can also be dragged from the Note Tree. It will be placed at the
- position it's dragged on.
+ href="#root/_help_oPVyFC7WL2Lp">Note Tree. It will be placed at the position
+ it's dragged on.
Multiple notes can also be dragged via Multiple selection. The notes will
- be positioned near the dragged position without overlapping.
+ href="#root/_help_yTjUdsOi4CIE">Multiple selection. The notes will be positioned
+ near the dragged position without overlapping.
The dragged note can be a sub-child of the map, or it can be at any arbitrary
position.
@@ -42,7 +42,8 @@
Development process demo
This is a basic example how you can create simple diagram using relation
maps:
-
+
And this is how you can create it:
@@ -58,8 +59,8 @@ width="812" height="585">
Family demo
This is more complicated demo using some advanced concepts. Resulting
diagram is here:
Render Note is used in Scripting.
It works by displaying the HTML of a Code note,
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Saved Search.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Saved Search.html
index 6d6794743..2251e04ed 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Saved Search.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Saved Search.html
@@ -10,6 +10,6 @@ style="width:50%;">
Location
By default, saved searches are stored in the day note. However, you can
designate a different note to store saved searches by marking it with the #searchHome label.
- Additionally, for workspaces, you
- can use the #workspaceSearchHome label to specify a storage
- location for saved searches within that workspace.
\ No newline at end of file
+ Additionally, for workspaces, you can use
+ the #workspaceSearchHome label to specify a storage location
+ for saved searches within that workspace.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html
index e6bfdc696..2c55d232c 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html
@@ -7,8 +7,10 @@
The Floating toolbar is hidden by default and only appears when
needed. In this mode there are actually two different toolbars:
-
-
+
+
A toolbar that appears when text is selected. This provides text-level
formatting such as bold, italic, text colors, inline code, etc.
@@ -175,8 +177,8 @@
to use the mouse. For a reference of all the key combinations, see
Keyboard Shortcuts. In addition, see Markdown-like formatting as an
- alternative to the keyboard shortcuts.
+ href="#root/_help_QrtTYPmdd1qq">Markdown-like formatting as an alternative
+ to the keyboard shortcuts.
Technical details
For the text editing functionality, Trilium uses a commercial product
(with an open-source base) called CKEditor.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Tables_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Tables_image.png
index 5cf2cc519..099b25357 100644
Binary files a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Tables_image.png and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Tables_image.png differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/11_Tables_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/11_Tables_image.png
index cde63c9ac..5cf2cc519 100644
Binary files a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/11_Tables_image.png and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/11_Tables_image.png differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/12_Tables_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/12_Tables_image.png
index 9c512ee53..cde63c9ac 100644
Binary files a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/12_Tables_image.png and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/12_Tables_image.png differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/13_Tables_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/13_Tables_image.png
new file mode 100644
index 000000000..9c512ee53
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/13_Tables_image.png differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/14_Tables_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/14_Tables_image.png
new file mode 100644
index 000000000..dd4becc16
Binary files /dev/null and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/14_Tables_image.png differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Tables_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Tables_image.png
index 099b25357..e80215476 100644
Binary files a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Tables_image.png and b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Tables_image.png differ
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Bookmarks.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Bookmarks.html
index 8e1e9979f..bc7b346e3 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Bookmarks.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Bookmarks.html
@@ -1,5 +1,5 @@
-
Bookmarks allows creating links to
- a certain part of a note, such as referencing a particular heading.
+
Bookmarks allows creating links to a certain
+ part of a note, such as referencing a particular heading.
Technically, bookmarks are HTML anchors.
This feature was introduced in TriliumNext 0.94.0.
Interaction
@@ -8,9 +8,11 @@
Place the cursor at the desired position where to place the bookmark.
To place a link to a bookmark:
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Developer-specific formatting.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Developer-specific formatting.html
index be60556c4..dcd74f7f2 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Developer-specific formatting.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Developer-specific formatting.html
@@ -8,8 +8,8 @@
as shell commands (git in this case).
Note that when editing a text note, syntax highlighting is automatically
disabled if the code block is too big (somewhere around 500 lines). This
value is currently not configurable. For Read-Only Notes, this limitation is
- not applied.
+ href="#root/_help_CoFPLs3dRlXc">Read-Only Notes, this limitation is not applied.
In order to configure this new feature, a section has been added in Options
→ Appearance to control the syntax highlighting. There the color scheme
can be chosen, from a builtin selection of themes from Highlight.js.
The supported languages can be adjusted by going to Options, then Code Notes and
- looking for the Available MIME types in the dropdown section. Simply
- check any of the items to add them to the list, or uncheck them to remove
- them from the list.
+ href="#root/_help_4TIF1oA4VQRO">Options, then Code Notes and looking
+ for the Available MIME types in the dropdown section. Simply check
+ any of the items to add them to the list, or uncheck them to remove them
+ from the list.
Note that the list of languages is not immediately refreshed, you'd have
to manually refresh the application.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Footnotes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Footnotes.html
index dc63ed511..4f15b318f 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Footnotes.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Footnotes.html
@@ -1,14 +1,14 @@
-
+
Footnotes are a good place to insert references to a paragraph or details
that are displayed at the bottom of the note.
Interaction
To insert a new footnote, press
- (or press the right arrow and select New footnote).
+ (or press the right arrow and select New footnote).
To insert a reference to an existing footnote, press the right arrow and
select Insert footnote, followed by the number of the footnote
to insert.
The
- Remove formatting button is a quick way to eliminate the general
+ Remove formatting button is a quick way to eliminate the general
formatting styling of a particular text.
Simply select the text and press the button to remove the formatting (bold,
italic, colors, sizes, etc.). If the text does not have any removable formatting,
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Highlights list.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Highlights list.html
index b492c7cc0..8ee85d2c9 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Highlights list.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Highlights list.html
@@ -1,6 +1,6 @@
-
+
Similar to the Table of contents,
but instead of headings this feature will list highlighted text from a
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html
index d5badf0f9..c38380185 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html
@@ -1,10 +1,9 @@
Trilium supports storing and displaying images. Supported formats are
JPEG, PNG and GIF.
An image can be uploaded in the form of note's attachment or
- as a standalone note placed into the
- note tree. Its reference can be copied into a text note, in order
- to display it in the text itself.
+ as a standalone note placed into the note tree.
+ Its reference can be copied into a text note, in order to display it in
+ the text itself.
Uploading images
To add an image to the note, simply drag it from file explorer onto the
note editor inside Trilium and the image will be uploaded.
Image references are an easy way to embed the preview of another note
type into a Text note.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Include Note.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Include Note.html
index 6197d3e5d..d828b8fae 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Include Note.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Include Note.html
@@ -7,9 +7,9 @@
button. There is also a keyboard shortcut defined for it but it is not
allocated by default.
Included notes in the share functionality
-
If a shared note contains one or
- more included notes, they will be displayed in the content of the note
- as if they were part of the note itself.
+
If a shared note contains one or more included
+ notes, they will be displayed in the content of the note as if they were
+ part of the note itself.
For this to work, the included notes must also be shared, otherwise they
will not be shown. However, the included notes can still be hidden from
the note tree via #shareHiddenFromTree.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Insert buttons.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Insert buttons.html
index d74b7f43b..74dde6679 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Insert buttons.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Insert buttons.html
@@ -1,13 +1,14 @@
Press the
- button in the Formatting toolbar to
+ button in the Formatting toolbar to
reveal special inserable items and blocks such as symbols, Math expressions
and separators.
This feature allows inserting Unicode emoji characters. Simply select
a category and a desired emoji to insert it.
@@ -17,15 +18,17 @@
by a name of an emoji, triggering the display of a list of emojis. Simply
use the arrow keys to select one and press Enter to insert it.
+src="1_Insert buttons_plus.png" width="272"
+height="187">
Symbols
-
+
Pressing the
- button will reveal a popup window displaying a list of characters that
+ button will reveal a popup window displaying a list of characters that
are generally more difficult to insert directly from the keyboard, such
as a subset of emojis, quotation characters, etc.
Press the
- button to create an inline Mermaid diagram.
+ button to create an inline Mermaid diagram.
This feature is quite similar to the Mermaid Diagrams note
types and is meant as an alternative to it for simple diagrams. For more
complex diagrams, use the Include Note feature
for a dedicated Mermaid note.
-
+
Horizontal ruler
@@ -55,12 +59,13 @@ src="1_Insert buttons_plus.png" width="272" height="187">
button in the Formatting toolbar.
+ src="3_Insert buttons_image.png" width="502"
+ height="95">
Alternatively, it's possible to insert a horizontal ruler by typing ---.
Page break
-
+
Page breaks provide a way to force the next paragraph or block (table,
image, etc.) to be displayed onto the next page when printing (either to
@@ -69,8 +74,8 @@ src="1_Insert buttons_plus.png" width="272" height="187">
but they will not actually be shown when printed.
To insert a page break, press the
- in the formatting toolbar.
+ in the formatting toolbar.
To insert many page breaks at once, insert a page break first, click on
it and press Ctrl+C. Then use Ctrl+V,
to paste as many times as needed.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html
index fa5d3dcef..52ab39530 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html
@@ -31,5 +31,4 @@
press enter and you have a link.
Note map
Trilium provides a visualisation of incoming and outgoing links for a
- particular note. See note map for
- details.
\ No newline at end of file
+ particular note. See note map for details.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links/External links.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links/External links.html
index e296eef5a..4bb65ae95 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links/External links.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Links/External links.html
@@ -4,7 +4,8 @@
There are three types of lists supported by text notes:
- Bulleted lists (also known as unordered lists).
+ Bulleted lists (also known as unordered lists).
- Numbered lists (or ordered lists).
+ Numbered lists (or ordered lists).
- To-do lists
+ To-do lists
For bulleted and numbered lists, it's possible to configure an alternative
marker such as squares or Roman numbering by pressing the
@@ -29,8 +32,8 @@
To exit out of the list, press Enter twice.
To merge two lists, simply delete the gap between them.
To create nested lists, simply use the
- button (see Indentation in Other features)
+ button (see Indentation in Other features)
or the Tab key. To decrease the nesting level for the current
element, press Shift+Tab.
Markdown-like formatting allows inserting some basic formatting by typing
the Markdown equivalent. Note that this does not mean that Text notes supports Markdown,
- these are just some convenience shortcuts.
+ href="#root/_help_iPIMuisry3hd">Text notes supports Markdown, these
+ are just some convenience shortcuts.
The mathematical expression must be written in the TeX format. There is
no visual editor for the math equations, only a preview.
@@ -30,8 +31,8 @@
surrounded by $ characters for inline math expressions, and $$ for
display mode.
If you notice any issue with the Markdown import/export for equations,
- feel free to report it while providing
- the equation that causes issues.
+ feel free to report it while providing the
+ equation that causes issues.
Formatting the equation
It is possible to customize the font size and foreground color for both
inline and display-mode equations, just like any other text. For inline
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Other features.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Other features.html
index fe16dc603..ca8e824be 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Other features.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Other features.html
@@ -1,25 +1,27 @@
Indentation
-
+
Paragraphs can be indented to the right using the button from the
Formatting toolbar.
Press
- to increase the indentation of the current paragraph by one. Can be pressed
+ to increase the indentation of the current paragraph by one. Can be pressed
multiple times if needed.
Press
- to decrease the indentation of a current paragraph. The button will be
+ to decrease the indentation of a current paragraph. The button will be
disabled if it is already at the minimum indentation level.
For convenience, keyboard shortcuts are also available. Press Tab to
indent or Shift+Tab to decrease the indentation. These
shortcuts work even if the cursor is not at the beginning of a paragraph
or a list.
Apart from paragraphs, the indent button is also enabled in Lists, where it can be used to create
- nested lists.
+ href="#root/_help_S6Xx8QIWTV66">Lists, where it can be used to create nested
+ lists.
Markdown import
If the clipboard contains Markdown text, it can be easily imported into
@@ -38,14 +40,16 @@
not have access to the clipboard.
Cut to subnote
The
- button will create a child note with the selected text. For more information,
+ button will create a child note with the selected text. For more information,
see Cut to subnote.
Find and replace
-
+
The
- button will open the editor's dedicated search and replace functionality.
+ button will open the editor's dedicated search and replace functionality.
Alternatively, the Ctrl+F combination can be pressed
to show the dialog.
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Premium features/Slash Commands.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Premium features/Slash Commands.html
index ca453511a..bcd8f9556 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Premium features/Slash Commands.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Premium features/Slash Commands.html
@@ -1,6 +1,6 @@
-
+