Compare commits

..

26 Commits

Author SHA1 Message Date
Elian Doran
9819a92b48 docs(guide): remove a missing note link 2025-10-28 23:01:56 +02:00
Elian Doran
55a7017e92 docs(guide): document the zoom function 2025-10-28 22:55:52 +02:00
Elian Doran
1581568741 docs(guide): add promoted attribute for alias 2025-10-28 22:31:59 +02:00
Elian Doran
d7982c65dd docs(guide): add alias for most pages 2025-10-28 22:30:46 +02:00
Elian Doran
39608a2815 docs(guide): home page & third party hosting + sync 2025-10-28 22:07:05 +02:00
Elian Doran
f656c2caaa fix(export/zip): links breaking down in markdown export 2025-10-28 21:32:05 +02:00
Elian Doran
bd3e92f091 fix(export/zip): export options not considered 2025-10-28 20:40:53 +02:00
Elian Doran
7ce7c66463 chore(build-docs): address requested changes 2025-10-28 19:31:57 +02:00
Elian Doran
61d26fec60 refactor(build-docs): use proper await when building documentation 2025-10-28 19:30:55 +02:00
Elian Doran
1822eea77c chore: remove remaining references to mkdocs 2025-10-28 19:19:39 +02:00
Elian Doran
28c0e4e802 chore(client): remove no longer relevant input 2025-10-28 19:15:01 +02:00
Elian Doran
88d90fdedd fix(export/share): favicon working only on top-level 2025-10-28 18:23:11 +02:00
Elian Doran
2a1ecdbdca feat(share): display admonition icons (closes #6733) 2025-10-28 18:18:03 +02:00
Elian Doran
5772046674 chore(share): remove redundant file 2025-10-28 18:17:06 +02:00
Elian Doran
1e2c8b2ac4 fix(export/share): ckcontent CSS missing 2025-10-28 18:16:37 +02:00
Elian Doran
955b202b8a chore(export/share): hide last updated 2025-10-28 17:59:12 +02:00
Elian Doran
be98a27439 feat(export/share): prefer #shareAlias 2025-10-28 17:57:48 +02:00
Elian Doran
54200fa0cb chore(export/share): disable non-functional search 2025-10-28 17:33:36 +02:00
Elian Doran
5d82a26c87 fix(build-docs): missing favicon 2025-10-28 17:23:31 +02:00
Elian Doran
e51070e389 chore(share): handle BAttachments too 2025-10-28 17:16:34 +02:00
Elian Doran
e0dc4fee20 fix(share): reference links not working 2025-10-28 17:14:33 +02:00
Elian Doran
187e9b57de fix(share): note tree not visible on mobile 2025-10-28 16:57:04 +02:00
Elian Doran
d6d67e7957 fix(docs/share): share theme not built 2025-10-28 16:45:27 +02:00
Elian Doran
bde03e8378 feat(docs/share): integrate in the CI 2025-10-28 16:42:52 +02:00
Elian Doran
4c3fcdba4a fix(share): images appearing stretched 2025-10-28 16:34:38 +02:00
Elian Doran
7a5c1277f1 feat(docs/share): set up script to build documentation 2025-10-28 16:24:55 +02:00
141 changed files with 2064 additions and 2299 deletions

View File

@@ -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,8 @@ 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/**'
- 'packages/share-theme/**'
# Allow manual triggering from Actions tab
workflow_dispatch:
@@ -27,15 +22,12 @@ 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/**'
- '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 +41,25 @@ 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: '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"
- name: Deploy
uses: ./.github/actions/deploy-to-cloudflare-pages

View File

@@ -1,24 +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 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();
}

View File

@@ -74,7 +74,6 @@ export default defineConfig(() => ({
mobile: join(__dirname, "src", "mobile.ts"),
login: join(__dirname, "src", "login.ts"),
setup: join(__dirname, "src", "setup.ts"),
share: join(__dirname, "src", "share.ts"),
set_password: join(__dirname, "src", "set_password.ts"),
runtime: join(__dirname, "src", "runtime.ts"),
print: join(__dirname, "src", "print.tsx")

View File

@@ -0,0 +1,109 @@
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 fs, { copyFile } from "fs/promises";
import fsExtra, { createWriteStream, type WriteStream } from "fs-extra";
import archiver from "archiver";
const DOCS_ROOT = "../../../docs";
const OUTPUT_DIR = "../../site";
async function main() {
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);
const note = await importData(join(__dirname, DOCS_ROOT, "User Guide"));
// Export
const zipFilePath = "output.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 = createWriteStream(zipFilePath);
await exportToZip(taskContext, branch, "share", fileOutputStream);
await waitForStreamToFinish(fileOutputStream);
await extractZip(zipFilePath, OUTPUT_DIR);
} finally {
if (await fsExtra.exists(zipFilePath)) {
await fsExtra.rm(zipFilePath);
}
}
// Copy favicon.
await copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "favicon.ico"));
console.log("Documentation built successfully!");
}
export async function importData(path: string) {
const buffer = await createImportZip(path);
const importService = (await import("@triliumnext/server/src/services/import/zip.js")).default;
const TaskContext = (await import("@triliumnext/server/src/services/task_context.js")).default;
const context = new TaskContext("no-progress-reporting", "importNotes", null);
const becca = (await import("@triliumnext/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<void>((res, rej) => {
stream.on("finish", () => res());
stream.on("error", (err) => rej(err));
});
}
export async function extractZip(zipFilePath: string, outputPath: string, ignoredFiles?: Set<string>) {
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();
});
}
cls.init(main);

View File

@@ -1,502 +0,0 @@
import { test, expect } from "@playwright/test";
import App from "./support/app";
const BASE_URL = "http://127.0.0.1:8082";
/**
* E2E tests for exact search functionality using the leading "=" operator.
*
* These tests validate the GitHub issue:
* - Searching for "pagio" returns many false positives (e.g., "page", "pages")
* - Searching for "=pagio" should return ONLY exact matches for "pagio"
*/
test.describe("Exact Search with Leading = Operator", () => {
let csrfToken: string;
let createdNoteIds: string[] = [];
test.beforeEach(async ({ page, context }) => {
const app = new App(page, context);
await app.goto();
// Get CSRF token
csrfToken = await page.evaluate(() => {
return (window as any).glob.csrfToken;
});
expect(csrfToken).toBeTruthy();
// Create test notes with specific content patterns
// Note 1: Contains exactly "pagio" in title
const note1 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Test Note with pagio",
content: "This note contains the word pagio in the content.",
type: "text"
}
});
expect(note1.ok()).toBeTruthy();
const note1Data = await note1.json();
createdNoteIds.push(note1Data.note.noteId);
// Note 2: Contains "page" (not exact match)
const note2 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Test Note with page",
content: "This note contains the word page in the content.",
type: "text"
}
});
expect(note2.ok()).toBeTruthy();
const note2Data = await note2.json();
createdNoteIds.push(note2Data.note.noteId);
// Note 3: Contains "pages" (plural, not exact match)
const note3 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Test Note with pages",
content: "This note contains the word pages in the content.",
type: "text"
}
});
expect(note3.ok()).toBeTruthy();
const note3Data = await note3.json();
createdNoteIds.push(note3Data.note.noteId);
// Note 4: Contains "homepage" (contains "page", not exact match)
const note4 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Homepage Note",
content: "This note is about homepage content.",
type: "text"
}
});
expect(note4.ok()).toBeTruthy();
const note4Data = await note4.json();
createdNoteIds.push(note4Data.note.noteId);
// Note 5: Another note with exact "pagio" in content
const note5 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Another pagio Note",
content: "This is another note with pagio content for testing exact matches.",
type: "text"
}
});
expect(note5.ok()).toBeTruthy();
const note5Data = await note5.json();
createdNoteIds.push(note5Data.note.noteId);
// Note 6: Contains "pagio" in title only
const note6 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "pagio",
content: "This note has pagio as the title.",
type: "text"
}
});
expect(note6.ok()).toBeTruthy();
const note6Data = await note6.json();
createdNoteIds.push(note6Data.note.noteId);
// Wait a bit for indexing
await page.waitForTimeout(500);
});
test.afterEach(async ({ page }) => {
// Clean up created notes
for (const noteId of createdNoteIds) {
try {
const taskId = `cleanup-${Math.random().toString(36).substr(2, 9)}`;
await page.request.delete(`${BASE_URL}/api/notes/${noteId}?taskId=${taskId}&last=true`, {
headers: { "x-csrf-token": csrfToken }
});
} catch (e) {
console.error(`Failed to delete note ${noteId}:`, e);
}
}
createdNoteIds = [];
});
test("Quick search without = operator returns all partial matches", async ({ page }) => {
// Test the /quick-search endpoint without the = operator
const response = await page.request.get(`${BASE_URL}/api/quick-search/pag`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
// Should return multiple notes including "page", "pages", "homepage"
expect(data.searchResultNoteIds).toBeDefined();
expect(data.searchResults).toBeDefined();
// Filter to only our test notes
const testResults = data.searchResults.filter((result: any) =>
result.noteTitle.includes("page") ||
result.noteTitle.includes("pagio") ||
result.noteTitle.includes("Homepage")
);
// Should find at least "page", "pages", "homepage", and "pagio" notes
expect(testResults.length).toBeGreaterThanOrEqual(4);
console.log("Quick search 'pag' found:", testResults.length, "matching notes");
console.log("Note titles:", testResults.map((r: any) => r.noteTitle));
});
test("Quick search with = operator returns only exact matches", async ({ page }) => {
// Test the /quick-search endpoint WITH the = operator
const response = await page.request.get(`${BASE_URL}/api/quick-search/=pagio`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
// Should return only notes with exact "pagio" match
expect(data.searchResultNoteIds).toBeDefined();
expect(data.searchResults).toBeDefined();
// Filter to only our test notes
const testResults = data.searchResults.filter((result: any) =>
createdNoteIds.includes(result.notePath.split("/").pop() || "")
);
console.log("Quick search '=pagio' found:", testResults.length, "matching notes");
console.log("Note titles:", testResults.map((r: any) => r.noteTitle));
// Should find exactly 3 notes: "Test Note with pagio", "Another pagio Note", "pagio"
expect(testResults.length).toBe(3);
// Verify that none of the results contain "page" or "pages" (only "pagio")
for (const result of testResults) {
const title = result.noteTitle.toLowerCase();
const hasPageNotPagio = (title.includes("page") && !title.includes("pagio"));
expect(hasPageNotPagio).toBe(false);
}
});
test("Full search API without = operator returns partial matches", async ({ page }) => {
// Test the /search endpoint without the = operator
const response = await page.request.get(`${BASE_URL}/api/search/pag`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
// Should return an array of note IDs
expect(Array.isArray(data)).toBe(true);
// Filter to only our test notes
const testNoteIds = data.filter((id: string) => createdNoteIds.includes(id));
console.log("Full search 'pag' found:", testNoteIds.length, "matching notes from our test set");
// Should find at least 4 notes
expect(testNoteIds.length).toBeGreaterThanOrEqual(4);
});
test("Full search API with = operator returns only exact matches", async ({ page }) => {
// Test the /search endpoint WITH the = operator
const response = await page.request.get(`${BASE_URL}/api/search/=pagio`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
// Should return an array of note IDs
expect(Array.isArray(data)).toBe(true);
// Filter to only our test notes
const testNoteIds = data.filter((id: string) => createdNoteIds.includes(id));
console.log("Full search '=pagio' found:", testNoteIds.length, "matching notes from our test set");
// Should find exactly 3 notes with exact "pagio" match
expect(testNoteIds.length).toBe(3);
});
test("Exact search operator works with content search", async ({ page }) => {
// Create a note with "test" in title but different content
const noteWithTest = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Testing Content",
content: "This note contains the exact word test in content.",
type: "text"
}
});
expect(noteWithTest.ok()).toBeTruthy();
const noteWithTestData = await noteWithTest.json();
const testNoteId = noteWithTestData.note.noteId;
createdNoteIds.push(testNoteId);
// Create a note with "testing" (not exact match)
const noteWithTesting = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Testing More",
content: "This note has testing in the content.",
type: "text"
}
});
expect(noteWithTesting.ok()).toBeTruthy();
const noteWithTestingData = await noteWithTesting.json();
createdNoteIds.push(noteWithTestingData.note.noteId);
await page.waitForTimeout(500);
// Search with exact operator
const response = await page.request.get(`${BASE_URL}/api/quick-search/=test`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
const ourTestNotes = data.searchResults.filter((result: any) => {
const noteId = result.notePath.split("/").pop();
return noteId === testNoteId || noteId === noteWithTestingData.note.noteId;
});
console.log("Exact search '=test' found our test notes:", ourTestNotes.length);
console.log("Note titles:", ourTestNotes.map((r: any) => r.noteTitle));
// Should find the note with exact "test" match, but not "testing"
// Note: This test may fail if the implementation doesn't properly handle exact matching in content
expect(ourTestNotes.length).toBeGreaterThan(0);
});
test("Exact search is case-insensitive", async ({ page }) => {
// Create notes with different case variations
const noteUpper = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "EXACT MATCH",
content: "This note has EXACT in uppercase.",
type: "text"
}
});
expect(noteUpper.ok()).toBeTruthy();
const noteUpperData = await noteUpper.json();
createdNoteIds.push(noteUpperData.note.noteId);
const noteLower = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "exact match",
content: "This note has exact in lowercase.",
type: "text"
}
});
expect(noteLower.ok()).toBeTruthy();
const noteLowerData = await noteLower.json();
createdNoteIds.push(noteLowerData.note.noteId);
await page.waitForTimeout(500);
// Search with exact operator in lowercase
const response = await page.request.get(`${BASE_URL}/api/quick-search/=exact`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
const ourTestNotes = data.searchResults.filter((result: any) => {
const noteId = result.notePath.split("/").pop();
return noteId === noteUpperData.note.noteId || noteId === noteLowerData.note.noteId;
});
console.log("Case-insensitive exact search found:", ourTestNotes.length, "notes");
// Should find both uppercase and lowercase versions
expect(ourTestNotes.length).toBe(2);
});
test("Exact phrase matching with multi-word searches", async ({ page }) => {
// Create notes with various phrase patterns
const note1 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "exact phrase",
content: "This note contains the exact phrase.",
type: "text"
}
});
expect(note1.ok()).toBeTruthy();
const note1Data = await note1.json();
createdNoteIds.push(note1Data.note.noteId);
const note2 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "exact phrase match",
content: "This note has exact phrase followed by more words.",
type: "text"
}
});
expect(note2.ok()).toBeTruthy();
const note2Data = await note2.json();
createdNoteIds.push(note2Data.note.noteId);
const note3 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "phrase exact",
content: "This note has the words in reverse order.",
type: "text"
}
});
expect(note3.ok()).toBeTruthy();
const note3Data = await note3.json();
createdNoteIds.push(note3Data.note.noteId);
const note4 = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "this exact and that phrase",
content: "Words are separated but both present.",
type: "text"
}
});
expect(note4.ok()).toBeTruthy();
const note4Data = await note4.json();
createdNoteIds.push(note4Data.note.noteId);
await page.waitForTimeout(500);
// Search for exact phrase "exact phrase"
const response = await page.request.get(`${BASE_URL}/api/quick-search/='exact phrase'`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
const ourTestNotes = data.searchResults.filter((result: any) => {
const noteId = result.notePath.split("/").pop();
return [note1Data.note.noteId, note2Data.note.noteId, note3Data.note.noteId, note4Data.note.noteId].includes(noteId || "");
});
console.log("Exact phrase search '=\"exact phrase\"' found:", ourTestNotes.length, "notes");
console.log("Note titles:", ourTestNotes.map((r: any) => r.noteTitle));
// Should find only notes 1 and 2 (consecutive "exact phrase")
// Should NOT find note 3 (reversed order) or note 4 (words separated)
expect(ourTestNotes.length).toBe(2);
const foundTitles = ourTestNotes.map((r: any) => r.noteTitle);
expect(foundTitles).toContain("exact phrase");
expect(foundTitles).toContain("exact phrase match");
expect(foundTitles).not.toContain("phrase exact");
expect(foundTitles).not.toContain("this exact and that phrase");
});
test("Exact phrase matching respects word order", async ({ page }) => {
// Create notes to test word order sensitivity
const noteForward = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Testing Order",
content: "This is a test sentence for verification.",
type: "text"
}
});
expect(noteForward.ok()).toBeTruthy();
const noteForwardData = await noteForward.json();
createdNoteIds.push(noteForwardData.note.noteId);
const noteReverse = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Order Testing",
content: "A sentence test is this for verification.",
type: "text"
}
});
expect(noteReverse.ok()).toBeTruthy();
const noteReverseData = await noteReverse.json();
createdNoteIds.push(noteReverseData.note.noteId);
await page.waitForTimeout(500);
// Search for exact phrase "test sentence"
const response = await page.request.get(`${BASE_URL}/api/quick-search/='test sentence'`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
const ourTestNotes = data.searchResults.filter((result: any) => {
const noteId = result.notePath.split("/").pop();
return noteId === noteForwardData.note.noteId || noteId === noteReverseData.note.noteId;
});
console.log("Exact phrase search '=\"test sentence\"' found:", ourTestNotes.length, "notes");
console.log("Note titles:", ourTestNotes.map((r: any) => r.noteTitle));
// Should find only the forward order note
expect(ourTestNotes.length).toBe(1);
expect(ourTestNotes[0].noteTitle).toBe("Testing Order");
});
test("Multi-word exact search without quotes", async ({ page }) => {
// Test that multi-word search with = but without quotes also does exact phrase matching
const notePhrase = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Quick Test Note",
content: "A simple note for multi word testing.",
type: "text"
}
});
expect(notePhrase.ok()).toBeTruthy();
const notePhraseData = await notePhrase.json();
createdNoteIds.push(notePhraseData.note.noteId);
const noteScattered = await page.request.post(`${BASE_URL}/api/notes/root/children?target=into&targetBranchId=`, {
headers: { "x-csrf-token": csrfToken },
data: {
title: "Word Multi Testing",
content: "Words are multi scattered in this testing example.",
type: "text"
}
});
expect(noteScattered.ok()).toBeTruthy();
const noteScatteredData = await noteScattered.json();
createdNoteIds.push(noteScatteredData.note.noteId);
await page.waitForTimeout(500);
// Search for "=multi word" without quotes (parser tokenizes as two words)
const response = await page.request.get(`${BASE_URL}/api/quick-search/=multi word`, {
headers: { "x-csrf-token": csrfToken }
});
expect(response.ok()).toBeTruthy();
const data = await response.json();
const ourTestNotes = data.searchResults.filter((result: any) => {
const noteId = result.notePath.split("/").pop();
return noteId === notePhraseData.note.noteId || noteId === noteScatteredData.note.noteId;
});
console.log("Multi-word exact search '=multi word' found:", ourTestNotes.length, "notes");
console.log("Note titles:", ourTestNotes.map((r: any) => r.noteTitle));
// Should find only the note with consecutive "multi word" phrase
expect(ourTestNotes.length).toBe(1);
expect(ourTestNotes[0].noteTitle).toBe("Quick Test Note");
});
});

File diff suppressed because one or more lines are too long

View File

@@ -9,8 +9,8 @@ class="image image_resized" style="width:50.49%;">
width="785" height="498">
</figure>
<figure class="image image_resized" style="width:40.54%;">
<img style="aspect-ratio:467/100;" src="Installing Ollama_image.png" width="467"
height="100">
<img style="aspect-ratio:467/100;" src="Installing Ollama_image.png"
width="467" height="100">
</figure>
<figure class="image image_resized" style="width:55.73%;">
<img style="aspect-ratio:1296/1011;" src="1_Installing Ollama_image.png"

View File

@@ -1,6 +1,6 @@
<figure class="image image_resized" style="width:63.68%;">
<img style="aspect-ratio:1363/1364;" src="Introduction_image.png" width="1363"
height="1364">
<img style="aspect-ratio:1363/1364;" src="Introduction_image.png"
width="1363" height="1364">
<figcaption>An example chat with an LLM</figcaption>
</figure>
<p>The AI / LLM features within Trilium Notes are designed to allow you to
@@ -11,13 +11,13 @@
<p>The quickest way to get started is to navigate to the “AI/LLM” settings:</p>
<figure
class="image image_resized" style="width:74.04%;">
<img style="aspect-ratio:1916/1906;" src="5_Introduction_image.png" width="1916"
height="1906">
<img style="aspect-ratio:1916/1906;" src="5_Introduction_image.png"
width="1916" height="1906">
</figure>
<p>Enable the feature:</p>
<figure class="image image_resized" style="width:82.82%;">
<img style="aspect-ratio:1911/997;" src="1_Introduction_image.png" width="1911"
height="997">
<img style="aspect-ratio:1911/997;" src="1_Introduction_image.png"
width="1911" height="997">
</figure>
<h2>Embeddings</h2>
@@ -43,30 +43,30 @@ class="image image_resized" style="width:74.04%;">
We will then hit the “refresh” button to have it fetch our models:</p>
<figure
class="image image_resized" style="width:82.28%;">
<img style="aspect-ratio:1912/1075;" src="4_Introduction_image.png" width="1912"
height="1075">
<img style="aspect-ratio:1912/1075;" src="4_Introduction_image.png"
width="1912" height="1075">
</figure>
<p>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:</p>
<figure class="image image_resized"
style="width:61.73%;">
<img style="aspect-ratio:1232/959;" src="8_Introduction_image.png" width="1232"
height="959">
<img style="aspect-ratio:1232/959;" src="8_Introduction_image.png"
width="1232" height="959">
</figure>
<p>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:</p>
<figure class="image image_resized" style="width:67.06%;">
<img style="aspect-ratio:1333/499;" src="7_Introduction_image.png" width="1333"
height="499">
<img style="aspect-ratio:1333/499;" src="7_Introduction_image.png"
width="1333" height="499">
</figure>
<p>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”:</p>
<figure
class="image image_resized" style="width:65.69%;">
<img style="aspect-ratio:1337/1490;" src="3_Introduction_image.png" width="1337"
height="1490">
<img style="aspect-ratio:1337/1490;" src="3_Introduction_image.png"
width="1337" height="1490">
</figure>
<p>Creating the embeddings will take some time, and will be regenerated when
a Note is created, updated, or deleted (removed).</p>
@@ -139,8 +139,8 @@ class="image image_resized" style="width:74.04%;">
<p>When Tools are executed within your Chat, you'll see output like the following:</p>
<figure
class="image image_resized" style="width:66.88%;">
<img style="aspect-ratio:1372/1591;" src="6_Introduction_image.png" width="1372"
height="1591">
<img style="aspect-ratio:1372/1591;" src="6_Introduction_image.png"
width="1372" height="1591">
</figure>
<p>You don't need to tell the LLM to execute a certain tool, it should “smartly”
call tools and automatically execute them as needed.</p>
@@ -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!:</p>
<figure
class="image image_resized" style="width:60.77%;">
<img style="aspect-ratio:1378/539;" src="2_Introduction_image.png" width="1378"
height="539">
<img style="aspect-ratio:1378/539;" src="2_Introduction_image.png"
width="1378" height="539">
</figure>
<p>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:</p>
<figure class="image image_resized" style="width:69.81%;">
<img style="aspect-ratio:1765/1287;" src="9_Introduction_image.png" width="1765"
height="1287">
<img style="aspect-ratio:1765/1287;" src="9_Introduction_image.png"
width="1765" height="1287">
</figure>

View File

@@ -10,9 +10,9 @@
and arbitrary tags - whenever you change tag attribute in the task note,
this task is then automatically moved to appropriate location.</p>
<p>Task Manager also integrates with <a href="#root/_help_l0tKav7yLHGF">day notes</a> -
notes are <a href="#root/_help_IakOLONlIfGI">cloned</a> into day note to
both todoDate note and doneDate note (with <a href="#root/_help_kBrnXNG3Hplm">prefix</a> of
either "TODO" or "DONE").</p>
notes are <a href="#root/_help_IakOLONlIfGI">cloned</a> into day note to both todoDate
note and doneDate note (with <a href="#root/_help_kBrnXNG3Hplm">prefix</a> of either
"TODO" or "DONE").</p>
<h2>Implementation</h2>
<p>New tasks are created in the TODO note which has <code>~child:template</code>
<a
@@ -22,9 +22,9 @@
<p>Task template defines several <a href="#root/_help_OFXdgB2nNk1F">promoted attributes</a> -
todoDate, doneDate, tags, location. Importantly it also defines <code>~runOnAttributeChange</code> relation
- <a href="#root/_help_GPERMystNGTB">event</a> handler which is run on attribute
change. This <a href="#root/_help_CdNpE2pqjmI6">script</a> 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.</p>
change. This <a href="#root/_help_CdNpE2pqjmI6">script</a> 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.</p>
<h3>New task button</h3>
<p>There's also "button" note which contains simple script which adds a button
to create new note (task) in the TODO note.</p><pre><code class="language-text-x-trilium-auto">api.addButtonToToolbar({

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:1071/146;" src="Attributes_image.png" width="1071"
height="146">
<img style="aspect-ratio:1071/146;" src="Attributes_image.png"
width="1071" height="146">
</figure>
<p>In Trilium, attributes are key-value pairs assigned to notes, providing
additional metadata or functionality. There are two primary types of attributes:</p>

View File

@@ -1,6 +1,6 @@
<p>Inheritance refers to the process of having a <a href="#root/_help_HI6GBBIduIgv">label</a> or
a <a href="#root/_help_Cq5X6iKQop6R">relation</a> shared across multiple
notes, generally in parent-child relations (or anywhere if using templates).</p>
a <a href="#root/_help_Cq5X6iKQop6R">relation</a> shared across multiple notes,
generally in parent-child relations (or anywhere if using templates).</p>
<h2>Standard Inheritance</h2>
<p>In Trilium, attributes can be automatically inherited by child notes if
they have the <code>isInheritable</code> flag set to <code>true</code>. This

View File

@@ -1,5 +1,5 @@
<p>A label is an <a href="#root/_help_zEY4DaJG4YT5">attribute</a> of a note
which has a name and optionally a value.</p>
<p>A label is an <a href="#root/_help_zEY4DaJG4YT5">attribute</a> of a note which
has a name and optionally a value.</p>
<h2>Common use cases</h2>
<ul>
<li><strong>Metadata for personal use</strong>: Assign labels with optional
@@ -81,8 +81,7 @@
<td><code>calendarRoot</code>
</td>
<td>Marks the note which should be used as root for&nbsp;<a class="reference-link"
href="#root/_help_l0tKav7yLHGF">Day Notes</a>. Only one should be marked
as such.</td>
href="#root/_help_l0tKav7yLHGF">Day Notes</a>. Only one should be marked as such.</td>
</tr>
<tr>
<td><code>archived</code>
@@ -154,8 +153,8 @@
<tr>
<td><code>autoReadOnlyDisabled</code>
</td>
<td>Disables automatic <a href="#root/_help_CoFPLs3dRlXc">read-only mode</a> for
the given note.</td>
<td>Disables automatic <a href="#root/_help_CoFPLs3dRlXc">read-only mode</a> for the
given note.</td>
</tr>
<tr>
<td><code>appCss</code>
@@ -177,8 +176,7 @@
<td>Set to <code>next</code>, <code>next-light</code>, or <code>next-dark</code> to
use the corresponding TriliumNext theme (auto, light or dark) as the base
for a custom theme, instead of the legacy one. See&nbsp;<a class="reference-link"
href="#root/_help_WFGzWeUK6arS">Customize the Next theme</a>&nbsp;for more
information.</td>
href="#root/_help_WFGzWeUK6arS">Customize the Next theme</a>&nbsp;for more information.</td>
</tr>
<tr>
<td><code>cssClass</code>

View File

@@ -1,5 +1,5 @@
<p>A relation is similar to a <a href="#root/_help_HI6GBBIduIgv">label</a>,
but instead of having a text value it refers to another note.</p>
<p>A relation is similar to a <a href="#root/_help_HI6GBBIduIgv">label</a>, but
instead of having a text value it refers to another note.</p>
<h2>Common use cases</h2>
<ul>
<li><strong>Metadata Relationships for personal use</strong>: For example,

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:1425/654;" src="Bulk Actions_image.png" width="1425"
height="654">
<img style="aspect-ratio:1425/654;" src="Bulk Actions_image.png"
width="1425" height="654">
</figure>
<p>The <em>Bulk Actions</em> 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 @@
<h2>Interaction</h2>
<ul>
<li>The first step is to select the notes in the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>. It's possible to apply bulk
actions to:
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>. It's possible to apply bulk actions
to:
<ul>
<li>A single note (and potentially its child notes) simply by clicking on
it (with a left click or a right click).</li>
@@ -53,17 +53,17 @@
</li>
<li><strong>Update label value</strong>
<ul>
<li>For each note, if it has a <a href="#root/_help_HI6GBBIduIgv">label</a> of
the given name, it will change its value to the specified one. Leave <em>New value</em> field
<li>For each note, if it has a <a href="#root/_help_HI6GBBIduIgv">label</a> of the
given name, it will change its value to the specified one. Leave <em>New value</em> field
empty to create a label without a value.</li>
<li>Notes without the label will not be affected.</li>
</ul>
</li>
<li><em><strong>Rename label</strong></em>
<ul>
<li>For each note, if it has a <a href="#root/_help_HI6GBBIduIgv">label</a> 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.</li>
<li>For each note, if it has a <a href="#root/_help_HI6GBBIduIgv">label</a> 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.</li>
<li>Notes without the label will not be affected.</li>
</ul>
</li>

View File

@@ -1,8 +1,8 @@
<p>A Trilium instance represents a server. If&nbsp;<a class="reference-link"
href="#root/_help_cbkrhQjrkKrh">Synchronization</a>&nbsp;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.</p>
href="#root/_help_cbkrhQjrkKrh">Synchronization</a>&nbsp;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.</p>
<h2>Setting the instance name</h2>
<p>To set up a name for the instance, modify the <code>config.ini</code>:</p><pre><code class="language-text-x-trilium-auto">[General]
instanceName=Hello</code></pre>

View File

@@ -23,5 +23,5 @@
<p>If you do not need to preserve any configurations that might be stored
in the <code>config.ini</code> file, you can just delete all of the <a href="#root/_help_tAassRL4RSQL">data directory's</a> contents
to fully restore the application to its original state. You can also review
the <a href="#root/_help_Gzjqa934BdH4">configuration</a> file to provide
all <code>config.ini</code> values as environment variables instead.</p>
the <a href="#root/_help_Gzjqa934BdH4">configuration</a> file to provide all <code>config.ini</code> values
as environment variables instead.</p>

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-right">
<img style="aspect-ratio:263/445;" src="Hidden Notes_image.png" width="263"
height="445">
<img style="aspect-ratio:263/445;" src="Hidden Notes_image.png"
width="263" height="445">
</figure>
<p>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</a>,&nbsp;<a class="reference-link"
href="#root/_help_Cq5X6iKQop6R">Relations</a>&nbsp;or even&nbsp;<a class="reference-link"
href="#root/_help_eIg8jdvaoNNd">Search</a>&nbsp;and&nbsp;<a class="reference-link"
href="#root/_help_QEAPj01N5f7w">Links</a>&nbsp;to be able to operate on
them.</p>
href="#root/_help_QEAPj01N5f7w">Links</a>&nbsp;to be able to operate on them.</p>
<p>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.</p>
<p>The hidden notes are stored in the user's&nbsp;<a class="reference-link"
href="#root/_help_wX4HbRucYSDD">Database</a>&nbsp;just like normal notes,
but they have a unique&nbsp;<a class="reference-link" href="#root/_help_m1lbrzyKDaRB">Note ID</a>&nbsp;which
href="#root/_help_wX4HbRucYSDD">Database</a>&nbsp;just like normal notes, but
they have a unique&nbsp;<a class="reference-link" href="#root/_help_m1lbrzyKDaRB">Note ID</a>&nbsp;which
allows them to be distinguished from the normal ones.</p>
<h2>Accessing the hidden note tree</h2>
<p>From the&nbsp;<a class="reference-link" href="#root/_help_x3i7MxGccDuM">Global menu</a>,
@@ -51,8 +50,8 @@ class="ck-table-resized">
</td>
<td>
<p>When SQL queries or commands are executed in the&nbsp;<a class="reference-link"
href="#root/_help_YKWqdJhzi2VY">SQL Console</a>, they are stored here,
grouped by month. Only the query is stored and not the results.</p>
href="#root/_help_YKWqdJhzi2VY">SQL Console</a>, they are stored here, grouped
by month. Only the query is stored and not the results.</p>
<p>This section can be accessed without going to the hidden tree by simply
going to the&nbsp;<a class="reference-link" href="#root/_help_x3i7MxGccDuM">Global menu</a>&nbsp;and
selecting Advanced → Open SQL Console History.</p>
@@ -65,9 +64,8 @@ class="ck-table-resized">
</td>
<td>
<p>Whenever a search is executed from the full&nbsp;<a class="reference-link"
href="#root/_help_eIg8jdvaoNNd">Search</a>, the query will be stored here,
grouped by month. Only the search parameters are stored and not the results
themselves.</p>
href="#root/_help_eIg8jdvaoNNd">Search</a>, the query will be stored here, grouped
by month. Only the search parameters are stored and not the results themselves.</p>
<p>This section can be accessed without going to the hidden tree by simply
going to the&nbsp;<a class="reference-link" href="#root/_help_x3i7MxGccDuM">Global menu</a>&nbsp;and
selecting Advanced → Open Search History.</p>

View File

@@ -82,18 +82,18 @@ trilium_notes_total 1234 1701432000
</ul>
<h2><strong>Grafana Dashboard</strong></h2>
<figure class="image">
<img style="aspect-ratio:2594/1568;" src="1_Metrics_image.png" width="2594"
height="1568">
<img style="aspect-ratio:2594/1568;" src="1_Metrics_image.png"
width="2594" height="1568">
</figure>
<p>You can also use the Grafana Dashboard that has been created for TriliumNext
- just take the JSON from&nbsp;<a class="reference-link" href="#root/_help_bOP3TB56fL1V">grafana-dashboard.json</a>&nbsp;and
then import the dashboard, following these screenshots:</p>
<figure class="image">
<img style="aspect-ratio:1881/282;" src="2_Metrics_image.png" width="1881"
height="282">
<img style="aspect-ratio:1881/282;" src="2_Metrics_image.png"
width="1881" height="282">
</figure>
<p>Then paste the JSON, and hit load:</p>
<figure class="image">
<img style="aspect-ratio:1055/830;" src="Metrics_image.png" width="1055"
height="830">
<img style="aspect-ratio:1055/830;" src="Metrics_image.png"
width="1055" height="830">
</figure>

View File

@@ -21,8 +21,8 @@
in full screen. See&nbsp;<a href="#root/_help_bdUJEHsAPYQR">Note Map</a>&nbsp;for
more information.</p>
<h2>See also</h2>
<p><a href="#root/_help_iRwzGnHPzonm">Relation map</a> is a similar concept,
with some differences:</p>
<p><a href="#root/_help_iRwzGnHPzonm">Relation map</a> is a similar concept, with
some differences:</p>
<ul>
<li>note map is automatically generated while relation map must be created
manually</li>

View File

@@ -5,9 +5,9 @@
<ul>
<li><a class="reference-link" href="#root/_help_iPIMuisry3hd">Text</a>&nbsp;notes&nbsp;are
represented internally as HTML, using the&nbsp;<a class="reference-link"
href="#root/_help_MI26XDLSAlCD">CKEditor</a>&nbsp;representation. Note
that due to the custom plugins, some HTML elements are specific to Trilium
only, for example the admonitions.</li>
href="#root/_help_MI26XDLSAlCD">CKEditor</a>&nbsp;representation. Note that due
to the custom plugins, some HTML elements are specific to Trilium only,
for example the admonitions.</li>
<li><a class="reference-link" href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;notes&nbsp;are
plain text and are represented internally as-is.</li>
<li><a class="reference-link" href="#root/_help_81SGnPGMk7Xc">Geo Map</a>&nbsp;notes
@@ -22,10 +22,10 @@
</ul>
<p>Note that some information is also stored as&nbsp;<a class="reference-link"
href="#root/_help_0vhv7lsOLy82">Attachments</a>. For example&nbsp;<a class="reference-link"
href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;notes use the attachments
feature to store the custom libraries, and alongside with&nbsp;<a class="reference-link"
href="#root/_help_gBbsAeiuUxI5">Mind Map</a>&nbsp;and other similar note
types it stores an SVG representation of the content for use in other features
href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;notes use the attachments feature
to store the custom libraries, and alongside with&nbsp;<a class="reference-link"
href="#root/_help_gBbsAeiuUxI5">Mind Map</a>&nbsp;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.</p>
<p>Here's part of the HTML representation of this note, as it's stored in
the database (but prettified).</p><pre><code class="language-text-x-trilium-auto">&lt;h2&gt;

View File

@@ -3,8 +3,8 @@
from your Trilium notes, making it accessible to others online.</p>
<figure
class="image">
<img style="aspect-ratio:1144/660;" src="Sharing_image.png" width="1144"
height="660">
<img style="aspect-ratio:1144/660;" src="Sharing_image.png"
width="1144" height="660">
</figure>
<h2>Features, interaction and limitations</h2>
@@ -177,8 +177,8 @@ class="image">
<p>Some of these limitations may be addressed in future updates.</p>
<h2>Prerequisites</h2>
<p>To use the sharing feature, you must have a&nbsp;<a class="reference-link"
href="#root/_help_WOcw2SLH6tbX">Server Installation</a>&nbsp;of Trilium.
This is necessary because the notes will be hosted from the server.</p>
href="#root/_help_WOcw2SLH6tbX">Server Installation</a>&nbsp;of Trilium. This
is necessary because the notes will be hosted from the server.</p>
<h2>Sharing a note</h2>
<ol>
<li>
@@ -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.</p>
<p>
<img src="Sharing_share-single-note.png" alt="Share Note">
<img src="Sharing_share-single-note.png"
alt="Share Note">
</p>
</li>
<li>
@@ -220,10 +221,10 @@ class="image">
it using your own CSS:</p>
<ul>
<li><strong>Custom CSS</strong>: Link a CSS&nbsp;<a class="reference-link"
href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;note to the shared page by
adding a <code>~shareCss</code> 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 <code>#shareHiddenFromTree</code> label.</li>
href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;note to the shared page by adding
a <code>~shareCss</code> 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 <code>#shareHiddenFromTree</code> label.</li>
<li><strong>Omitting Default CSS</strong>: For extensive styling changes,
use the <code>#shareOmitDefaultCss</code> label to avoid conflicts with Trilium's
<a

View File

@@ -39,7 +39,7 @@
</li>
<li><a href="#root/_help_QEAPj01N5f7w">Reference links</a>
</li>
<li><a href="#root/_help_NwBbFdNZ9h7O">Admonitions</a>, we ended up creating
our own plugin but <a href="https://github.com/aarkue/ckeditor5-admonition">aarkue/ckeditor5-admonition</a> was
<li><a href="#root/_help_NwBbFdNZ9h7O">Admonitions</a>, we ended up creating our
own plugin but <a href="https://github.com/aarkue/ckeditor5-admonition">aarkue/ckeditor5-admonition</a> was
a good inspiration (including the toolbar icon).</li>
</ul>

View File

@@ -1,5 +1,5 @@
<p><a href="https://excalidraw.com/">Excalidraw</a> is the technology behind
the&nbsp;<a href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;notes. The
source code of the library is available on <a href="https://github.com/excalidraw/excalidraw">GitHub</a>.</p>
the&nbsp;<a href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;notes. The source
code of the library is available on <a href="https://github.com/excalidraw/excalidraw">GitHub</a>.</p>
<p>We are using an unmodified version of it, so it shares the same <a href="https://github.com/excalidraw/excalidraw/issues">issues</a> as
the original.</p>

View File

@@ -3,10 +3,10 @@
main effects:</p>
<ol>
<li><strong>Attribute Inheritance</strong>: All attributes from the template
note are <a href="#root/_help_bwZpz2ajCEwO">inherited</a> by the instance
notes. Even attributes with <code>#isInheritable=false</code> are inherited
by the instance notes, although only inheritable attributes are further
inherited by the children of the instance notes.</li>
note are <a href="#root/_help_bwZpz2ajCEwO">inherited</a> by the instance notes.
Even attributes with <code>#isInheritable=false</code> are inherited by the
instance notes, although only inheritable attributes are further inherited
by the children of the instance notes.</li>
<li><strong>Content Duplication</strong>: The content of the template note
is copied to the instance note, provided the instance note is empty at
the time of template assignment.</li>
@@ -32,7 +32,8 @@
all attributes from the template are inherited.</p>
<p>To create an instance note through the UI:</p>
<p>
<img src="Templates_template-create-.png" alt="show child note templates">
<img src="Templates_template-create-.png"
alt="show child note templates">
</p>
<p>For the template to appear in the menu, the template note must have the <code>#template</code> label.
Do not confuse this with the <code>~template</code> relation, which links

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:991/403;" src="1_Jump to_image.png" width="991"
height="403">
<img style="aspect-ratio:991/403;" src="1_Jump to_image.png"
width="991" height="403">
</figure>
<h2>Jump to Note</h2>
@@ -34,8 +34,8 @@
<p>Alternatively you can click on the "time" icon on the right.</p>
<h2>Command Palette</h2>
<figure class="image image-style-align-center">
<img style="aspect-ratio:982/524;" src="Jump to_image.png" width="982"
height="524">
<img style="aspect-ratio:982/524;" src="Jump to_image.png"
width="982" height="524">
</figure>
<p>The command palette is a feature which allows easy execution of various
commands that can be found throughout the application, such as from menus

View File

@@ -5,7 +5,6 @@
<img src="Note Hoisting_note-hoistin.gif">
</p>
<p>In addition to showing only this subtree, this also narrows both full
text search and <a href="#root/_help_MMiBEQljMQh2">“jump to note”</a> to
just notes present in hoisted subtree.</p>
<p>See also <a href="#root/_help_9sRHySam5fXb">Workspace</a> which extends
this feature.</p>
text search and <a href="#root/_help_MMiBEQljMQh2">“jump to note”</a> to just notes
present in hoisted subtree.</p>
<p>See also <a href="#root/_help_9sRHySam5fXb">Workspace</a> which extends this feature.</p>

View File

@@ -1,16 +1,16 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:659/256;" src="Quick search_image.png" width="659"
height="256">
<img style="aspect-ratio:659/256;" src="Quick search_image.png"
width="659" height="256">
</figure>
<p>The <em>Quick search</em> 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.</p>
<p>The alternative to the quick search is the&nbsp;<a class="reference-link"
href="#root/_help_eIg8jdvaoNNd">Search</a>&nbsp;function, which opens in
a dedicated tab and has support for advanced queries.</p>
href="#root/_help_eIg8jdvaoNNd">Search</a>&nbsp;function, which opens in a dedicated
tab and has support for advanced queries.</p>
<p>For even faster navigation, it's possible to use&nbsp;<a class="reference-link"
href="#root/_help_F1r9QtzQLZqm">Jump to...</a>&nbsp;which will only search
through the note titles instead of the content.</p>
href="#root/_help_F1r9QtzQLZqm">Jump to...</a>&nbsp;which will only search through
the note titles instead of the content.</p>
<h2>Layout</h2>
<p>Based on the&nbsp;<a class="reference-link" href="#root/_help_x0JgW8UqGXvq">Vertical and horizontal layout</a>,
the quick search is placed:</p>
@@ -18,8 +18,8 @@
<li>On the vertical layout, it is displayed right above the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>.</li>
<li>On the horizontal layout, it is displayed in the&nbsp;<a class="reference-link"
href="#root/_help_xYmIYSP6wE3F">Launch Bar</a>, where it can be positioned
just like any other icon.</li>
href="#root/_help_xYmIYSP6wE3F">Launch Bar</a>, where it can be positioned just
like any other icon.</li>
</ul>
<h2>Search Features</h2>
<p>Quick search includes the following features:</p>

View File

@@ -1,6 +1,6 @@
<figure class="image image_resized" style="width:100%;">
<img style="aspect-ratio:898/93;" src="Search in note_image.png" width="898"
height="93">
<img style="aspect-ratio:898/93;" src="Search in note_image.png"
width="898" height="93">
</figure>
<p>Local search allows you to search within the currently displayed note.&nbsp;</p>
<h2>Alternatives</h2>

View File

@@ -1,10 +1,10 @@
<figure class="image">
<img style="aspect-ratio:987/725;" src="Search_image.png" width="987"
height="725">
<img style="aspect-ratio:987/725;" src="Search_image.png"
width="987" height="725">
</figure>
<p>Note search enables you to find notes by searching for text in the title,
content, or <a href="#root/_help_zEY4DaJG4YT5">attributes</a> of the notes.
You also have the option to save your searches, which will create a special
content, or <a href="#root/_help_zEY4DaJG4YT5">attributes</a> 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.</p>
<h2>Accessing the search</h2>
@@ -107,8 +107,8 @@
action multiple times (i.e. in order to be able to apply multiple labels
to notes).</li>
<li>The actions given are the same as the ones in&nbsp;<a class="reference-link"
href="#root/_help_ivYnonVFBxbQ">Bulk Actions</a>, which is an alternative
for operating directly with notes within the&nbsp;<a class="reference-link"
href="#root/_help_ivYnonVFBxbQ">Bulk Actions</a>, which is an alternative for
operating directly with notes within the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>.</li>
<li>After defining the actions, first press <em>Search</em> to check the matched
notes and then press <em>Search &amp; Execute actions</em> to trigger the

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:1626/540;" src="Similar Notes_image.png" width="1626"
height="540">
<img style="aspect-ratio:1626/540;" src="Similar Notes_image.png"
width="1626" height="540">
</figure>
<p>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

View File

@@ -6,8 +6,8 @@
<p>So far workspace consists of these features:</p>
<ul>
<li>
<p><a href="#root/_help_OR8WJ7Iz9K4U">note hoisting</a> - you can "zoom" into
a workspace subtree to focus only on the relevant notes</p>
<p><a href="#root/_help_OR8WJ7Iz9K4U">note hoisting</a> - you can "zoom" into a
workspace subtree to focus only on the relevant notes</p>
</li>
<li>
<p>easy entering of workspace:&nbsp;</p>

View File

@@ -2,10 +2,9 @@
and content.</p>
<h3>Note types</h3>
<p>The main note type is a rich-text note type called&nbsp;<a class="reference-link"
href="#root/_help_iPIMuisry3hd">Text</a>. For diagrams and drawing there
is&nbsp;<a class="reference-link" href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;and&nbsp;
href="#root/_help_iPIMuisry3hd">Text</a>. For diagrams and drawing there is&nbsp;
<a
class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams</a>.</p>
class="reference-link" href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;and&nbsp;<a class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams</a>.</p>
<p>There are also more complex note types such as&nbsp;<a class="reference-link"
href="#root/_help_m523cpzocqaD">Saved Search</a>,&nbsp;<a class="reference-link"
href="#root/_help_HcABDtFCkbFN">Render Note</a>&nbsp;that usually go hand-in-hand

View File

@@ -1,5 +1,5 @@
<p>A <a href="#root/_help_BFs8mudNFgCS">note</a> in Trilium can <em>own</em> one
or more attachments, which can be either images or files. These attachments
<p>A <a href="#root/_help_BFs8mudNFgCS">note</a> in Trilium can <em>own</em> one or
more attachments, which can be either images or files. These attachments
can be displayed or linked within the note that owns them.</p>
<p>This can be especially useful to include dependencies for your <a href="#root/_help_CdNpE2pqjmI6">scripts</a>.
The&nbsp;<a class="reference-link" href="#root/_help_R7abl2fc6Mxi">Weight Tracker</a>&nbsp;shows
@@ -21,8 +21,8 @@
<li>For a single note, press the context menu from the&nbsp;<a class="reference-link"
href="#root/_help_8YBEPzcpUgxw">Note buttons</a>&nbsp;and select <em>Convert into attachment</em>.</li>
<li>For multiple notes, select the given notes in the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>, right click → Advanced →
Convert to attachment.</li>
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>, right click → Advanced → Convert
to attachment.</li>
</ul>
<h2>Attachment previews</h2>
<p>Attachments share the same content preview for images, videos, PDFs, etc.

View File

@@ -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:</p>
<p>
<img src="Note Icons_note-icon-chang.png" alt="change note icon">
<img src="Note Icons_note-icon-chang.png"
alt="change note icon">
</p>
<p>
<img src="Note Icons_note-icon-galle.png" alt="note icon gallery">
<img src="Note Icons_note-icon-galle.png"
alt="note icon gallery">
</p>

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:990/590;" src="Note List_image.png" width="990"
height="590">
<img style="aspect-ratio:990/590;" src="Note List_image.png"
width="990" height="590">
</figure>
<p>When a note has one or more child notes, they will be listed at the end
of the note for easy navigation.</p>
@@ -19,7 +19,6 @@
the notes will be displayed in a grid, however there are also some other
view types available.</p>
<p>Generally the view type can only be changed in a&nbsp;<a class="reference-link"
href="#root/_help_GTwFsgaA0lCt">Collections</a>&nbsp;note from the&nbsp;
<a
class="reference-link" href="#root/_help_BlN9DFI679QC">Ribbon</a>, but it can also be changed manually on any type of note using
the <code>#viewType</code> attribute.</p>
href="#root/_help_GTwFsgaA0lCt">Collections</a>&nbsp;note from the&nbsp;<a class="reference-link"
href="#root/_help_BlN9DFI679QC">Ribbon</a>, but it can also be changed manually
on any type of note using the <code>#viewType</code> attribute.</p>

View File

@@ -4,6 +4,7 @@
<figcaption>Screenshot of the note contextual menu indicating the “Export as PDF”
option.</figcaption>
</figure>
<h2>Printing</h2>
<p>This feature allows printing of notes. It works on both the desktop client,
but also on the web.</p>
@@ -26,7 +27,8 @@ class="admonition note">
<a
href="#root/_help_wy8So3yZZlH9">report the issue</a>. In this case, it's best to offer a sample note (click
on the
<img src="1_Printing & Exporting as PD.png" width="29" height="31">button, select Export note → This note and all of its descendants → HTML
<img src="1_Printing & Exporting as PD.png"
width="29" height="31">button, select Export note → This note and all of its descendants → HTML
in ZIP archive). Make sure not to accidentally leak any personal information.</p>
<p>Consider adjusting font sizes and using <a href="#root/_help_CohkqWQC1iBv">page breaks</a> to
work around the layout.</p>
@@ -40,7 +42,7 @@ class="admonition note">
<aside class="admonition tip">
<p>Although direct export as PDF is not available in the browser version
of the application, it's still possible to generate a PDF by selecting
the <em>Print </em>option instead and selecting “Save to PDF” as the printer
the <em>Print</em> option instead and selecting “Save to PDF” as the printer
(depending on the browser). Generally, Mozilla Firefox has better printing
capabilities.</p>
</aside>
@@ -56,12 +58,11 @@ class="admonition note">
<h3>Customizing exporting as PDF</h3>
<p>When exporting to PDF, there are no customizable settings such as page
orientation, size. However, there are a few&nbsp;<a class="reference-link"
href="#root/_help_zEY4DaJG4YT5">Attributes</a>&nbsp;to adjust some of the
settings:</p>
href="#root/_help_zEY4DaJG4YT5">Attributes</a>&nbsp;to adjust some of the settings:</p>
<ul>
<li data-list-item-id="e91eb69cdf42469e4f21852a6b27616b3">To print in landscape mode instead of portrait (useful for big diagrams
<li>To print in landscape mode instead of portrait (useful for big diagrams
or slides), add <code>#printLandscape</code>.</li>
<li data-list-item-id="e111f43a2b5200816649515c5718b6c31">By default, the resulting PDF will be in Letter format. It is possible
<li>By default, the resulting PDF will be in Letter format. It is possible
to adjust it to another page size via the <code>#printPageSize</code> attribute,
with one of the following values: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>, <code>A4</code>, <code>A5</code>, <code>A6</code>, <code>Legal</code>, <code>Letter</code>, <code>Tabloid</code>, <code>Ledger</code>.</li>
</ul>
@@ -75,9 +76,9 @@ class="admonition note">
href="#root/_help_4TIF1oA4VQRO">Options</a>&nbsp;and assigning a key combination
for:</p>
<ul>
<li class="ck-list-marker-italic" data-list-item-id="e4065a346baa2fcc2f0bfe436f4026375"><em>Print Active Note</em>
<li><em>Print Active Note</em>
</li>
<li class="ck-list-marker-italic" data-list-item-id="e358a65968ddc456ba39276f3d03e67ab"><em>Export Active Note as PDF</em>
<li><em>Export Active Note as PDF</em>
</li>
</ul>
<h2>Constraints &amp; limitations</h2>
@@ -85,24 +86,24 @@ class="admonition note">
supported when printing, in which case the <em>Print</em> and <em>Export as PDF</em> options
will be disabled.</p>
<ul>
<li data-list-item-id="e10824952bca3d35d824df6ff828a674f">For&nbsp;<a class="reference-link" href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;notes:
<li>For&nbsp;<a class="reference-link" href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;notes:
<ul>
<li data-list-item-id="ea6c43aec2902c6e071541491e8bd60ac">Line numbers are not printed.</li>
<li data-list-item-id="efddf7e53853db4e34d16d154b8ed4928">Syntax highlighting is enabled, however a default theme (Visual Studio)
<li>Line numbers are not printed.</li>
<li>Syntax highlighting is enabled, however a default theme (Visual Studio)
is enforced.</li>
</ul>
</li>
<li data-list-item-id="e015b49c0f3289d6899c5a8b234d5be8b">For&nbsp;<a class="reference-link" href="#root/_help_GTwFsgaA0lCt">Collections</a>:
<li>For&nbsp;<a class="reference-link" href="#root/_help_GTwFsgaA0lCt">Collections</a>:
<ul>
<li data-list-item-id="ee53ebf2cbc850302a779b29475441b0b">Only&nbsp;<a class="reference-link" href="#root/_help_zP3PMqaG71Ct">Presentation View</a>&nbsp;is
<li>Only&nbsp;<a class="reference-link" href="#root/_help_zP3PMqaG71Ct">Presentation View</a>&nbsp;is
currently supported.</li>
<li data-list-item-id="ebb55f62a0f525b810fd11fadc01e86ac">We plan to add support for all the collection types at some point.</li>
<li>We plan to add support for all the collection types at some point.</li>
</ul>
</li>
<li data-list-item-id="e25476c9600ab387eda79fa5eec0b5394">Using&nbsp;<a class="reference-link" href="#root/_help_AlhDUqhENtH7">Custom app-wide CSS</a>&nbsp;for
<li>Using&nbsp;<a class="reference-link" href="#root/_help_AlhDUqhENtH7">Custom app-wide CSS</a>&nbsp;for
printing is not longer supported, due to a more stable but isolated mechanism.
<ul>
<li data-list-item-id="eeb0dc52913013746ad4c3709296fab6b">We plan to introduce a new mechanism specifically for a print CSS.</li>
<li>We plan to introduce a new mechanism specifically for a print CSS.</li>
</ul>
</li>
</ul>

View File

@@ -6,8 +6,8 @@
<li><strong>Encryption:</strong> 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 <a href="#root/_help_wX4HbRucYSDD">database</a>, they won't
be able to read your encrypted notes.</li>
your Trilium <a href="#root/_help_wX4HbRucYSDD">database</a>, they won't be able
to read your encrypted notes.</li>
<li><strong>Time-limited access:</strong> 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 @@
<p>By default, notes are unprotected. To protect a note, simply click on
the shield icon next to the note's title, as shown here:</p>
<p>
<img src="Protected Notes_protecting.gif" alt="example animation of unlocking protected notes">
<img src="Protected Notes_protecting.gif"
alt="example animation of unlocking protected notes">
</p>
<h2>What is Encrypted?</h2>
<p>Trilium encrypts the data within protected notes but not their metadata.

View File

@@ -11,10 +11,9 @@
of the next section.</p>
<p>In addition, it's possible to change the number of characters at which
the automatic read-only mode will trigger in&nbsp;<a class="reference-link"
href="#root/_help_4TIF1oA4VQRO">Options</a>&nbsp;by going to the options
for&nbsp;<a class="reference-link" href="#root/_hidden/_options/_help__optionsTextNotes">Text Notes</a>&nbsp;and&nbsp;
href="#root/_help_4TIF1oA4VQRO">Options</a>&nbsp;by going to the options for&nbsp;
<a
class="reference-link" href="#root/_hidden/_options/_help__optionsCodeNotes">Code Notes</a>.</p>
class="reference-link" href="#root/_hidden/_options/_help__optionsTextNotes">Text Notes</a>&nbsp;and&nbsp;<a class="reference-link" href="#root/_hidden/_options/_help__optionsCodeNotes">Code Notes</a>.</p>
<h2>Changing a note's read-only behavior</h2>
<p>Via the&nbsp;<a class="reference-link" href="#root/_help_BlN9DFI679QC">Ribbon</a>,
by going to the <em>Basic Properties</em> tab and looking for the <em>Editable</em> selection.

View File

@@ -1,7 +1,7 @@
<h2>Manual sorting</h2>
<p>You can sort notes by right-clicking the parent note in the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>&nbsp;and selecting Advanced
-&gt; Sort notes by ... This will sort existing notes, but will not automatically
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>&nbsp;and selecting Advanced -&gt;
Sort notes by ... This will sort existing notes, but will not automatically
sort future notes added to this parent note.</p>
<p>The sorting dialog allows:</p>
<ul>

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:893/144;" src="Floating buttons_image.png" width="893"
height="144">
<img style="aspect-ratio:893/144;" src="Floating buttons_image.png"
width="893" height="144">
</figure>
<p>Depending on the current note, a panel will appear near the top-right
of the note, right underneath the&nbsp;<a class="reference-link" href="#root/_help_BlN9DFI679QC">Ribbon</a>.
@@ -13,8 +13,8 @@
class="reference-link" href="#root/_help_grjYqerjn243">Canvas</a>, there are buttons to download the SVG representation of the
note, or to copy a reference to the note for pasting it a&nbsp;<a class="reference-link"
href="#root/_help_iPIMuisry3hd">Text</a>&nbsp;note.</li>
<li>For <a href="#root/_help_CoFPLs3dRlXc">read-only notes</a>, there is a
button to temporarily edit the note for quick modifications.</li>
<li>For <a href="#root/_help_CoFPLs3dRlXc">read-only notes</a>, there is a button
to temporarily edit the note for quick modifications.</li>
</ul>
<h2>Interaction</h2>
<p>The floating button area can be collapsed by pressing the two right arrows

View File

@@ -36,8 +36,8 @@
<p>Similarly, to remove it from the launch bar, simply look for it in <em>Visible Launchers</em> then
right click it and select <em>Move to available launchers</em> or use drag-and-drop.</p>
<p>Drag-and-drop the items in the&nbsp;tree&nbsp;in order to change their
order. See&nbsp;<a href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>&nbsp;for
more interaction options, including using keyboard shortcuts.</p>
order. See&nbsp;<a href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>&nbsp;for more
interaction options, including using keyboard shortcuts.</p>
<h2>Customizing the launcher</h2>
<ul>
<li>The icon of a launcher can be changed just like a normal note. See&nbsp;

View File

@@ -1,10 +1,10 @@
<figure class="image image-style-align-right">
<img style="aspect-ratio:505/261;" src="Note Tooltip_image.png" width="505"
height="261">
<img style="aspect-ratio:505/261;" src="Note Tooltip_image.png"
width="505" height="261">
</figure>
<p>The note tooltip is a convenience feature which displays a popup when
hovering over an <a href="#root/_help_hrZ1D00cLbal">internal link</a> to
another note.</p>
hovering over an <a href="#root/_help_hrZ1D00cLbal">internal link</a> to another
note.</p>
<p>The following information is displayed:</p>
<ul>
<li>The note path, at the top of the popup.</li>
@@ -16,8 +16,8 @@
</ul>
</li>
<li>A snippet of the content will be displayed as well.</li>
<li>A button to <a href="#root/_help_ZjLYv08Rp3qC">quickly edit</a> the note
in a popup.</li>
<li>A button to <a href="#root/_help_ZjLYv08Rp3qC">quickly edit</a> the note in a
popup.</li>
</ul>
<p>The tooltip can be found in multiple places, including:</p>
<ul>
@@ -29,8 +29,8 @@
when hovering over a marker.</li>
<li><a class="reference-link" href="#root/_help_xWbu3jpNWapp">Calendar View</a>,
when hovering over an event.</li>
<li><a class="reference-link" href="#root/_help_2FvYrpmOXm29">Table View</a>,
when hovering over a note title, or over a <a href="#root/_help_Cq5X6iKQop6R">relation</a>.</li>
<li><a class="reference-link" href="#root/_help_2FvYrpmOXm29">Table View</a>, when
hovering over a note title, or over a <a href="#root/_help_Cq5X6iKQop6R">relation</a>.</li>
</ul>
</li>
</ul>

View File

@@ -5,13 +5,15 @@
</p>
<h2>Drag and Drop</h2>
<p>
<img src="Note Tree_drag-and-drop.gif" alt="Drag and drop example">
<img src="Note Tree_drag-and-drop.gif"
alt="Drag and drop example">
</p>
<p>You can easily rearrange the note tree by dragging and dropping notes,
as demonstrated in the example above.</p>
<h2>Keyboard Manipulation</h2>
<p>
<img src="Note Tree_move-note-with-k.gif" alt="Example of using keyboard keys to move a note">Trilium offers efficient keyboard-based manipulation using the following
<img src="Note Tree_move-note-with-k.gif"
alt="Example of using keyboard keys to move a note">Trilium offers efficient keyboard-based manipulation using the following
<a
href="#root/_help_A9Oc6YKKc65v">shortcuts</a>:</p>
<ul>

View File

@@ -10,8 +10,7 @@
<ul>
<li>On a single note, by right clicking it in the note tree.</li>
<li>On multiple notes, by selecting them first. See&nbsp;<a class="reference-link"
href="#root/_help_yTjUdsOi4CIE">Multiple selection</a>&nbsp;on how to do
so.
href="#root/_help_yTjUdsOi4CIE">Multiple selection</a>&nbsp;on how to do so.
<ul>
<li>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 @@
<li>Use one of the two paste functions (or the keyboard shortcuts) to copy
them to the desired location.</li>
<li>Note that the copy function here works according to the&nbsp;<a class="reference-link"
href="#root/_help_IakOLONlIfGI">Cloning Notes</a>&nbsp;functionality (i.e.
the note itself will be present in two locations at once, and editing it
in one place will edit it everywhere).</li>
href="#root/_help_IakOLONlIfGI">Cloning Notes</a>&nbsp;functionality (i.e. the
note itself will be present in two locations at once, and editing it in
one place will edit it everywhere).</li>
<li>To simply create a duplicate note that can be modified independently,
look for <em>Duplicate subtree</em>.</li>
</ul>
@@ -145,8 +144,8 @@
</li>
<li><strong>Import into note</strong>
<ul>
<li>Opens the <a href="#root/_help_mHbBMPDPkVV5">import</a> dialog and places
the imported notes as child notes of the selected one.</li>
<li>Opens the <a href="#root/_help_mHbBMPDPkVV5">import</a> dialog and places the
imported notes as child notes of the selected one.</li>
</ul>
</li>
<li><strong>Export</strong>
@@ -191,8 +190,8 @@
<li>Converts the selected notes to&nbsp;<a class="reference-link" href="#root/_help_0vhv7lsOLy82">Attachments</a>&nbsp;of
their parent notes.</li>
<li>This functional is most useful when dealing with image&nbsp;<a class="reference-link"
href="#root/_help_W8vYD3Q1zjCR">File</a>&nbsp;notes that were imported
from an external source or an older version of Trilium.</li>
href="#root/_help_W8vYD3Q1zjCR">File</a>&nbsp;notes that were imported from an
external source or an older version of Trilium.</li>
</ul>
</li>
<li><strong>Expand subtree</strong>

View File

@@ -1,14 +1,13 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:1189/709;" src="Options_image.png" width="1189"
height="709">
<img style="aspect-ratio:1189/709;" src="Options_image.png"
width="1189" height="709">
</figure>
<p>The Options section allows the configuration of the TriliumNext client
and server.</p>
<h2>Entering options</h2>
<p>The Options can be accessed via:</p>
<ul>
<li>The&nbsp;<a href="#root/_help_x3i7MxGccDuM">Global menu</a>, by selecting
the <em>Options</em> item.</li>
<li>The&nbsp;<a href="#root/_help_x3i7MxGccDuM">Global menu</a>, by selecting the <em>Options</em> item.</li>
<li>The
<img src="1_Options_image.png">button in the&nbsp;<a href="#root/_help_xYmIYSP6wE3F">Launch Bar</a>&nbsp;which
can optionally be hidden if not desirable.</li>

View File

@@ -1,18 +1,18 @@
<figure class="image image-style-align-right image_resized" style="width:53.13%;">
<img style="aspect-ratio:895/694;" src="Quick edit_image.png" width="895"
height="694">
<img style="aspect-ratio:895/694;" src="Quick edit_image.png"
width="895" height="694">
</figure>
<p><em>Quick edit</em> provides an alternative to the standard tab-based navigation
and editing.</p>
<p>Instead of clicking on a note which switches the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>&nbsp;to the newly selected
note, or navigating between two different&nbsp;<a class="reference-link"
href="#root/_help_3seOhtN8uLIY">Tabs</a>, the <em>Quick edit</em> feature
opens as a popup window that can be easily dismissed.</p>
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>&nbsp;to the newly selected note,
or navigating between two different&nbsp;<a class="reference-link" href="#root/_help_3seOhtN8uLIY">Tabs</a>,
the <em>Quick edit</em> feature opens as a popup window that can be easily
dismissed.</p>
<p>This feature is also well integrated with&nbsp;<a class="reference-link"
href="#root/_help_GTwFsgaA0lCt">Collections</a>&nbsp;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.</p>
href="#root/_help_GTwFsgaA0lCt">Collections</a>&nbsp;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.</p>
<h2>Feature highlights</h2>
<ul>
<li>All note types are supported, including&nbsp;<a class="reference-link"

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center image_resized" style="width:50%;">
<img style="aspect-ratio:988/572;" src="1_Recent Changes_image.png" width="988"
height="572">
<img style="aspect-ratio:988/572;" src="1_Recent Changes_image.png"
width="988" height="572">
</figure>
<h2>Accessing the recent changes</h2>
@@ -9,10 +9,9 @@
<img src="Recent Changes_image.png"
width="25" height="21">button in the&nbsp;<a class="reference-link" href="#root/_help_xYmIYSP6wE3F">Launch Bar</a>.
<ul>
<li>If there is a <a href="#root/_help_OR8WJ7Iz9K4U">hoisted note</a> or a
<a
href="#root/_help_9sRHySam5fXb">workspace</a>, the list of recent changes will be limited to the descendents
of the hoisted note, or the workspace.</li>
<li>If there is a <a href="#root/_help_OR8WJ7Iz9K4U">hoisted note</a> or a <a href="#root/_help_9sRHySam5fXb">workspace</a>,
the list of recent changes will be limited to the descendents of the hoisted
note, or the workspace.</li>
</ul>
</li>
<li>To limit the list of recent changes to a note and its descendants, look

View File

@@ -24,28 +24,27 @@
</li>
<li><em><strong>Protect the note</strong></em> toggles whether the current
note is encrypted and accessible only by entering the protected session.
See&nbsp;<a href="#root/_help_bwg0e8ewQMak">Protected Notes</a>&nbsp;for
more information.</li>
See&nbsp;<a href="#root/_help_bwg0e8ewQMak">Protected Notes</a>&nbsp;for more
information.</li>
<li><em><strong>Editable</strong></em> changes whether the current note:
<ul>
<li>Enters <a href="#root/_help_CoFPLs3dRlXc">read-only mode</a> automatically
if the note is too big (default behaviour).</li>
<li>Enters <a href="#root/_help_CoFPLs3dRlXc">read-only mode</a> automatically if
the note is too big (default behaviour).</li>
<li>Is always in read-only mode (however it can still be edited temporarily).</li>
<li>Is always editable, regardless of its size.</li>
</ul>
</li>
<li><em><strong>Bookmark</strong></em> toggles the display of the current note
into the&nbsp;<a href="#root/_help_xYmIYSP6wE3F">Launch Bar</a>&nbsp;for
easy access. See&nbsp;<a href="#root/_help_u3YFHC9tQlpm">Bookmarks</a>&nbsp;for
more information.</li>
into the&nbsp;<a href="#root/_help_xYmIYSP6wE3F">Launch Bar</a>&nbsp;for easy
access. See&nbsp;<a href="#root/_help_u3YFHC9tQlpm">Bookmarks</a>&nbsp;for more
information.</li>
<li><em><strong>Shared</strong></em> toggles whether the current note is publicly
accessible if you have a <a href="#root/_help_WOcw2SLH6tbX">server instance</a> set
up. See&nbsp;<a href="#root/_help_R9pX4DGra2Vt">Sharing</a>&nbsp;for more
information.</li>
up. See&nbsp;<a href="#root/_help_R9pX4DGra2Vt">Sharing</a>&nbsp;for more information.</li>
<li><em><strong>Template</strong></em> toggles whether the current note is
considered a template and can be used to easily create notes with the same
content. See&nbsp;<a href="#root/_help_KC1HB96bqqHX">Template</a>&nbsp;for
more information.</li>
content. See&nbsp;<a href="#root/_help_KC1HB96bqqHX">Template</a>&nbsp;for more
information.</li>
<li><em><strong>Language</strong></em> changes the main language of the current
note, mostly useful for spell checking or right-to-left support. See&nbsp;
<a
@@ -65,23 +64,21 @@
<h3>Note Paths</h3>
<p>This section displays all the places where the current note has been cloned
to. Here the current note can also be cloned to a new location (similar
to the&nbsp;<a href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>) See&nbsp;
<a
href="#root/_help_IakOLONlIfGI">Cloning Notes</a>&nbsp;for more information.</p>
to the&nbsp;<a href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>) See&nbsp;<a href="#root/_help_IakOLONlIfGI">Cloning Notes</a>&nbsp;for
more information.</p>
<h3>Note Map</h3>
<p>The note map displays all the relations of the current note to other notes,
as well as the subtree structure. See&nbsp;<a href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>&nbsp;for
more information.</p>
<h3>Similar Notes</h3>
<p>This section lists all the notes that are similar to the current one.
See&nbsp;<a href="#root/_help_xWtq5NUHOwql">Similar Notes</a>&nbsp;for
more information.</p>
See&nbsp;<a href="#root/_help_xWtq5NUHOwql">Similar Notes</a>&nbsp;for more information.</p>
<h3>Note Info</h3>
<p>This section displays information about the current note:</p>
<ul>
<li>The <a href="#root/_help_m1lbrzyKDaRB">internal ID</a> of the note.</li>
<li>The <a href="#root/_help_KSZ04uQ2D1St">type of the note</a>, as well as
its MIME type (used mostly for exporting notes).</li>
<li>The <a href="#root/_help_KSZ04uQ2D1St">type of the note</a>, as well as its MIME
type (used mostly for exporting notes).</li>
<li>The created and modification dates.</li>
<li>The estimated size of the note in the&nbsp;<a href="#root/_help_wX4HbRucYSDD">Database</a>,
as well as its children count and size.</li>

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:1036/372;" src="Right Sidebar_image.png" width="1036"
height="372">
<img style="aspect-ratio:1036/372;" src="Right Sidebar_image.png"
width="1036" height="372">
</figure>
<p>The right sidebar displays specific content for the current note. Currently
it includes:</p>

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:1119/43;" src="2_Tabs_image.png" width="1119"
height="43">
<img style="aspect-ratio:1119/43;" src="2_Tabs_image.png"
width="1119" height="43">
</figure>
<p>In Trilium, tabs allow easy switching between notes.</p>
<h2>Layout</h2>
@@ -9,8 +9,8 @@
<li>For the vertical layout, the tabs will be placed at the top but to the
right of the&nbsp;<a class="reference-link" href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>.</li>
<li>For the horizontal layout, the tabs will be placed at the top in full-width,
above the&nbsp;<a href="#root/_help_oPVyFC7WL2Lp">note tree</a>, allowing
for more tabs to be comfortably displayed.</li>
above the&nbsp;<a href="#root/_help_oPVyFC7WL2Lp">note tree</a>, allowing for
more tabs to be comfortably displayed.</li>
</ul>
<h2>Interaction</h2>
<ul>
@@ -19,8 +19,8 @@
<li>To close a tab, press the corresponding
<img src="Tabs_image.png">button.</li>
<li>For multitasking, tabs can be used alongside&nbsp;<a class="reference-link"
href="#root/_help_luNhaphA37EO">Split View</a>. Each tab can have one or
more notes, displayed horizontally.</li>
href="#root/_help_luNhaphA37EO">Split View</a>. Each tab can have one or more
notes, displayed horizontally.</li>
<li>Tabs can be reordered by drag-and-dropping it into a new position.</li>
<li>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.</li>

View File

@@ -0,0 +1,8 @@
<p>Zoom applies to the entire UI, including text.</p>
<p>On the desktop application, use the&nbsp;<a class="reference-link" href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/Vc8PjrjAGuOp/_help_x3i7MxGccDuM">Global menu</a>&nbsp;to
zoom in/out.</p>
<p>On both web browser and the desktop, the keyboard shortcuts <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>+</kbd> and <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>-</kbd> can
be used.</p>
<h2>Adjusting the text size instead</h2>
<p>As an alternative to the zoom, the text size can be individually adjusted
by going to&nbsp;<a class="reference-link" href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/Vc8PjrjAGuOp/_help_4TIF1oA4VQRO">Options</a>&nbsp;<em>Appearance</em>.</p>

View File

@@ -1,3 +1,17 @@
<h2>Inspiration for the name “Trilium”</h2>
<blockquote>
<p>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.</p>
<p><em> Zadam (original Trilium maintainer)</em>
</p>
</blockquote>
<aside class="admonition note">
<p>Despite the fact that the Trillium flower has two “l"s, the Trilium application
only has one.</p>
</aside>
<h2>macOS support</h2>
<p>Originally, Trilium Notes considered the macOS build unsupported. TriliumNext
commits to make the experience on macOS as good as possible.</p>
@@ -11,14 +25,14 @@
<p>Common request is to allow multiple users collaborate, share notes etc.
So far I'm resisting this because of these reasons:</p>
<ul>
<li>it's a huge feature, or rather a Pandora's box of collaboration features
<li data-list-item-id="eb800113d8b3ab1905b710e9e8ee0f12a">it's a huge feature, or rather a Pandora's box of collaboration features
like user management, permissions, conflict resolution, real-time editing
of a note by multiple people etc. This would be a huge amount of work.
Trilium Notes is project made mostly by one person in free time and that's
unlikely to change in the future.</li>
<li>given its size it would probably pivot the attention away from my main
<li data-list-item-id="ee44659e9fabe03f5392ad0d6a3d1c246">given its size it would probably pivot the attention away from my main
focus which is a personal note-taking</li>
<li>the assumption that only single person has access to the app simplifies
<li data-list-item-id="e40e9d3e3682b4aa23621056270b76257">the assumption that only single person has access to the app simplifies
many things, or just outright makes them possible. In multi-user app, our
<a
href="#root/_help_CdNpE2pqjmI6">scripting</a>support would be a XSS security hole, while with the single
@@ -26,13 +40,14 @@
</ul>
<h2>How to open multiple documents in one Trilium instance</h2>
<p>This is normally not supported - one Trilium process can open only a single
instance of a <a href="#root/_help_wX4HbRucYSDD">database</a>. 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 <a href="#root/_help_tAassRL4RSQL">data directory</a> in the <code>TRILIUM_DATA_DIR</code> environment
variable and separate port on <code>TRILIUM_PORT</code> environment variable.
How to do that depends on the platform, in Unix-based systems you can achieve
that by running command such as this:</p><pre><code class="language-text-x-trilium-auto">TRILIUM_DATA_DIR=/home/me/path/to/data/dir TRILIUM_PORT=12345 trilium </code></pre>
instance of a <a href="#root/_help_wX4HbRucYSDD">database</a>. 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
<a
href="#root/_help_tAassRL4RSQL">data directory</a>in the <code>TRILIUM_DATA_DIR</code> environment variable
and separate port on <code>TRILIUM_PORT</code> environment variable. How
to do that depends on the platform, in Unix-based systems you can achieve
that by running command such as this:</p><pre><code class="language-text-x-trilium-auto">TRILIUM_DATA_DIR=/home/me/path/to/data/dir TRILIUM_PORT=12345 trilium </code></pre>
<p>You can save this command into a <code>.sh</code> script file or make an
alias. Do this similarly for a second instance with different data directory
and port.</p>
@@ -54,36 +69,38 @@
with probably more problems.</p>
<p>More detailed answer:</p>
<ul>
<li><a href="#root/_help_IakOLONlIfGI">clones</a> are what you might call "hard
directory link" in filesystem lingo, but this concept is not implemented
in any filesystem</li>
<li>filesystems make a distinction between directory and file while there's
<li data-list-item-id="ed6f42f2a9c3d02e70f8c562d961bb63d"><a href="#root/_help_IakOLONlIfGI">clones</a> are what you might call "hard directory
link" in filesystem lingo, but this concept is not implemented in any filesystem</li>
<li
data-list-item-id="ea08b9caa11abddfb48deb74d5b6f7388">filesystems make a distinction between directory and file while there's
intentionally no such difference in Trilium</li>
<li>files are stored in no particular order and user can't change this</li>
<li>Trilium allows storing note <a href="#root/_help_zEY4DaJG4YT5">attributes</a> which
could be represented in extended user attributes but their support differs
greatly among different filesystems / operating systems</li>
<li>Trilium makes links / relations between different notes which can be quickly
retrieved / navigated (e.g. for <a href="#root/_help_BCkXAVs63Ttv">note map</a>).
There's no such support in file systems which means these would have to
be stored in some kind of side-car files (mini-databases).</li>
<li>Filesystems are generally not transactional. While this is not completely
required for a note-taking application, having transactions make it way
easier to keep notes and their metadata in predictable and consistent state.</li>
<li data-list-item-id="e9c3473810cd4fe860b5824b714ced189">files are stored in no particular order and user can't change this</li>
<li
data-list-item-id="e168be7c32aff67053f0095dcd583da0f">Trilium allows storing note <a href="#root/_help_zEY4DaJG4YT5">attributes</a> which
could be represented in extended user attributes but their support differs
greatly among different filesystems / operating systems</li>
<li data-list-item-id="e86308cf2302c48ae3684f817ef921e46">Trilium makes links / relations between different notes which can be quickly
retrieved / navigated (e.g. for <a href="#root/_help_BCkXAVs63Ttv">note map</a>).
There's no such support in file systems which means these would have to
be stored in some kind of side-car files (mini-databases).</li>
<li data-list-item-id="ea23fb3e81afba708ad7da44c2feeb9be">Filesystems are generally not transactional. While this is not completely
required for a note-taking application, having transactions make it way
easier to keep notes and their metadata in predictable and consistent state.</li>
</ul>
<h2>Search-related Questions</h2>
<h3>Why does search sometimes find results with typos?</h3>
<p>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 (<code>~=</code> for
fuzzy exact match and <code>~*</code> for fuzzy contains). See the <a class="reference-link"
href="#root/_help_eIg8jdvaoNNd">Search</a> documentation for details.</p>
fuzzy exact match and <code>~*</code> for fuzzy contains). See the&nbsp;
<a
class="reference-link" href="#root/_help_eIg8jdvaoNNd">Search</a>&nbsp;documentation for details.</p>
<h3>How can I search for notes when I'm not sure of the exact spelling?</h3>
<p>Use the fuzzy search operators:</p>
<ul>
<li><code>#title ~= "projct"</code> - finds notes with titles like "project"
<li data-list-item-id="e91e70fef9031d168e95d28af8eb4c8ed"><code>#title ~= "projct"</code> - finds notes with titles like "project"
despite the typo</li>
<li><code>note.content ~* "algoritm"</code> - finds content containing "algorithm"
<li data-list-item-id="ee1eddc61b08bb2497a4eed03784cb845"><code>note.content ~* "algoritm"</code> - finds content containing "algorithm"
or similar words</li>
</ul>
<h3>Why do some search results appear before others with lower scores?</h3>
@@ -93,9 +110,9 @@
factors.</p>
<h3>How can I make my searches faster?</h3>
<ol>
<li>Use the "Fast search" option to search only titles and attributes (not
<li data-list-item-id="e31e798496de72ab1d1c890e5143bdcf3">Use the "Fast search" option to search only titles and attributes (not
content)</li>
<li>Limit search scope using the "Ancestor" field</li>
<li>Set a result limit to prevent loading too many results</li>
<li>For large databases, consider archiving old notes to reduce search scope</li>
<li data-list-item-id="e8659a04d4b8d1ce16740520524f51dd1">Limit search scope using the "Ancestor" field</li>
<li data-list-item-id="e71c171a22ad97a012f3fe0b4934e9eed">Set a result limit to prevent loading too many results</li>
<li data-list-item-id="e345d6d8caa359211458da8597d0aeb07">For large databases, consider archiving old notes to reduce search scope</li>
</ol>

View File

@@ -30,8 +30,8 @@
<li>v0.95.0:
<ul>
<li>A more friendly theme was introduced for&nbsp;<a class="reference-link"
href="#root/_help_R9pX4DGra2Vt">Sharing</a>, with search, expandable tree,
night mode and more.</li>
href="#root/_help_R9pX4DGra2Vt">Sharing</a>, with search, expandable tree, night
mode and more.</li>
</ul>
</li>
<li>v0.94.0:

View File

@@ -12,17 +12,17 @@
by default in <code>backup</code> directory placed in the <a href="#root/_help_tAassRL4RSQL">data directory</a>.</p>
<p>This is only very basic backup solution, and you're encouraged to add
some better backup solution - e.g. backing up the&nbsp;<a class="reference-link"
href="#root/_help_wX4HbRucYSDD">Database</a>&nbsp;to cloud / different
computer etc.</p>
href="#root/_help_wX4HbRucYSDD">Database</a>&nbsp;to cloud / different computer
etc.</p>
<p>Note that&nbsp;<a class="reference-link" href="#root/_help_cbkrhQjrkKrh">Synchronization</a>&nbsp;provides
also some backup capabilities by its nature of distributing the data to
other computers.</p>
<h2>Restoring backup</h2>
<p>Let's assume you want to restore the weekly backup, here's how to do it:</p>
<ul>
<li>find <a href="#root/_help_tAassRL4RSQL">data directory</a> Trilium uses
- easy way is to open "About Trilium Notes" from "Menu" in upper left corner
and looking at "data directory"
<li>find <a href="#root/_help_tAassRL4RSQL">data directory</a> Trilium uses - easy
way is to open "About Trilium Notes" from "Menu" in upper left corner and
looking at "data directory"
<ul>
<li>I'll refer to <code>~/trilium-data</code> as data directory from now on</li>
</ul>

View File

@@ -21,8 +21,8 @@
</ul>
</li>
<li><code>trilium-portable</code>: Launches Trilium in portable mode, where
the <a href="#root/_help_tAassRL4RSQL">data directory</a> is created within
the application's directory, making it easy to move the entire setup.</li>
the <a href="#root/_help_tAassRL4RSQL">data directory</a> is created within the
application's directory, making it easy to move the entire setup.</li>
<li><code>trilium-safe-mode</code>: Boots Trilium in "safe mode," disabling
any startup scripts that might cause the application to crash.</li>
</ul>

View File

@@ -12,8 +12,8 @@ class="admonition note">
<h2>Mobile interface</h2>
<p>By default, this will display the desktop user interface, even on mobile.
To switch to the mobile version, simply go to the&nbsp;<a class="reference-link"
href="#root/_help_x3i7MxGccDuM">Global menu</a>&nbsp;and select “Switch
to the mobile version”.</p>
href="#root/_help_x3i7MxGccDuM">Global menu</a>&nbsp;and select “Switch to the
mobile version”.</p>
<h2>Allowing the port externally on Windows with Windows Defender Firewall</h2>
<p>First, find out the IP of your desktop server by running <code>ipconfig</code> in
your local terminal. Then try accessing <code>http://&lt;ip&gt;:37840/login</code> on

View File

@@ -1,7 +1,7 @@
<p>Trilium (<a href="#root/_help_WOcw2SLH6tbX">server edition</a>) 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.</p>
<p>Trilium (<a href="#root/_help_WOcw2SLH6tbX">server edition</a>) 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.</p>
<p>Mobile frontend is limited in features compared to full desktop frontend.
See below for more details on this.</p>
<p>Note that this is not an Android/iOS app, this is just mobile friendly

View File

@@ -27,8 +27,8 @@
<p>After setting up your server installation, you may want to configure settings
such as the port or enable <a href="#root/_help_l2VkvOwUNfZj">TLS</a>. Configuration
is managed via the Trilium <code>config.ini</code> file, which is located
in the <a href="#root/_help_tAassRL4RSQL">data directory</a> by default.
To begin customizing your setup, copy the provided <code>config-sample.ini</code> file
in the <a href="#root/_help_tAassRL4RSQL">data directory</a> by default. To begin
customizing your setup, copy the provided <code>config-sample.ini</code> file
with default values to <code>config.ini</code>.</p>
<p>You can also review the <a href="#root/_help_Gzjqa934BdH4">configuration</a> file
to provide all <code>config.ini</code> values as environment variables instead.</p>

View File

@@ -39,5 +39,5 @@ nohup TRILIUM_ENV=dev node src/www &amp;</code></pre>
browser and navigate to <a href="http://localhost:8080">http://localhost:8080</a> to
access Trilium (replace "localhost" with your hostname).</p>
<h2>TLS</h2>
<p>Don't forget to <a href="#root/_help_l2VkvOwUNfZj">configure TLS</a> which
is required for secure usage!</p>
<p>Don't forget to <a href="#root/_help_l2VkvOwUNfZj">configure TLS</a> which is
required for secure usage!</p>

View File

@@ -163,5 +163,5 @@ echo "Cleanup complete. Trilium updated to $LATEST_VERSION."</code></pre>
<p>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 <a href="#root/_help_WOcw2SLH6tbX">server installation</a> method.</p>
<h2>TLS</h2>
<p>Don't forget to <a href="#root/_help_l2VkvOwUNfZj">configure TLS</a>, which
is required for secure usage!</p>
<p>Don't forget to <a href="#root/_help_l2VkvOwUNfZj">configure TLS</a>, which is
required for secure usage!</p>

View File

@@ -4,8 +4,7 @@
by adding the following to <code>config.ini</code>:</p><pre><code class="language-text-x-trilium-auto">[General]
noAuthentication=true</code></pre>
<p>Disabling authentication will bypass even the&nbsp;<a class="reference-link"
href="#root/_help_7DAiwaf8Z7Rz">Multi-Factor Authentication</a>&nbsp;since
v0.94.1.</p>
href="#root/_help_7DAiwaf8Z7Rz">Multi-Factor Authentication</a>&nbsp;since v0.94.1.</p>
<h2>Understanding how the session works</h2>
<p>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</code></pre>
the <em>last interaction with the application</em>.</p>
<h2>Viewing active sessions</h2>
<p>The login sessions are now stored in the same&nbsp;<a class="reference-link"
href="#root/_help_wX4HbRucYSDD">Database</a>&nbsp;as the user data. In
order to view which sessions are active, open the&nbsp;<a class="reference-link"
href="#root/_help_YKWqdJhzi2VY">SQL Console</a>&nbsp;and run the following
query:</p><pre><code class="language-text-x-trilium-auto">SELECT * FROM sessions</code></pre>
href="#root/_help_wX4HbRucYSDD">Database</a>&nbsp;as the user data. In order
to view which sessions are active, open the&nbsp;<a class="reference-link"
href="#root/_help_YKWqdJhzi2VY">SQL Console</a>&nbsp;and run the following query:</p><pre><code class="language-text-x-trilium-auto">SELECT * FROM sessions</code></pre>
<p>Expired sessions are periodically cleaned by the server, generally an
hourly interval.</p>
<h2>See also</h2>

View File

@@ -3,8 +3,8 @@
<aside
class="admonition tip">
<p>While Trilium supports HTTPS on its own, it's generally a good idea to
use a <a href="#root/_help_vcjrb3VVYPZI">reverse proxy</a> instead with TLS
termination. You can follow a <a href="https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04">guide like this</a> for
use a <a href="#root/_help_vcjrb3VVYPZI">reverse proxy</a> instead with TLS termination.
You can follow a <a href="https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04">guide like this</a> for
such setups.</p>
</aside>
<h2>Obtaining a TLS Certificate</h2>
@@ -20,8 +20,8 @@ class="admonition tip">
</ul>
<h2>Modifying <code>config.ini</code></h2>
<p>Once you have your certificate, modify the <code>config.ini</code> file
in the <a href="#root/_help_tAassRL4RSQL">data directory</a> to configure
Trilium to use it:</p><pre><code class="language-text-x-trilium-auto">[Network]
in the <a href="#root/_help_tAassRL4RSQL">data directory</a> to configure Trilium
to use it:</p><pre><code class="language-text-x-trilium-auto">[Network]
port=8080
# Set to true for TLS/SSL/HTTPS (secure), false for HTTP (insecure).
https=true

View File

@@ -0,0 +1,37 @@
<p>As an alternative to <a href="#root/pOsGYCXsbNQG/Otzi9La2YAUX/WOcw2SLH6tbX/_help_Dgg7bR3b6K9j">hosting your own Trilium instance</a>,
there are two services out there that provide out of the box support for
Trilium.</p>
<aside class="admonition important">
<p><strong>Disclaimer</strong>: The Trilium Notes project and maintainers
are not directly affiliated with either of the projects.</p>
<p>PikaPods have gracefully offered us free credits for testing purposes.</p>
</aside>
<h2>Cloud instance providers</h2>
<h3>PikaPods</h3>
<ol>
<li>Go to <a href="https://www.pikapods.com">pikapods.com</a> &nbsp;and sign
up.</li>
<li>In the “Available Apps” section, look for "TriliumNext
<br>&nbsp;and select “Run your own”.</li>
<li>Follow the on-screen instructions to set up your own cloud hosted instance.</li>
</ol>
<p>PikaPods generally updates their Trilium instances to the latest version
within a two-week interval after a new version is released.</p>
<h3>trilium.cc</h3>
<p><a href="https://trilium.cc/">Trilium.cc</a> is a cloud service dedicated
to hosting a Trilium instance.</p>
<aside class="admonition warning">
<p>Trilium.cc usually runs several versions behind Trilium releases.</p>
</aside>
<h2>Matching your version with the cloud instance</h2>
<p>Please note that once you set up&nbsp;<a class="reference-link" href="#root/pOsGYCXsbNQG/Otzi9La2YAUX/_help_cbkrhQjrkKrh">Synchronization</a>&nbsp;between
a cloud instance and <a href="#root/pOsGYCXsbNQG/Otzi9La2YAUX/_help_poXkQfguuA0U">desktop</a> clients,
it's important that the version of the desktop application and the server
match up.</p>
<p>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 <em>About</em> section.
It's best that both the desktop and the server have the same <em>App version</em>;
however it's generally OK to update the desktop to a newer version than
the server if it has the same <em>Sync version</em>.</p>
<p>If the <em>Sync version</em> between the server and the desktop application
doesn't match, synchronization will not work.</p>

View File

@@ -12,9 +12,9 @@
<h2>Setting Up Synchronization</h2>
<h3>Security Considerations</h3>
<p>Setting up the server securely is critical and can be complex. It is crucial
to use a valid <a href="#root/_help_l2VkvOwUNfZj">TLS certificate</a> (HTTPS)
rather than an unencrypted HTTP connection to ensure security and avoid
potential vulnerabilities.</p>
to use a valid <a href="#root/_help_l2VkvOwUNfZj">TLS certificate</a> (HTTPS) rather
than an unencrypted HTTP connection to ensure security and avoid potential
vulnerabilities.</p>
<h3>Synchronizing a Desktop Instance with a Sync Server</h3>
<p>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.</p>
@@ -26,7 +26,8 @@
instance address" to your sync server's address. Click Save.</li>
</ol>
<p>
<img src="Synchronization_sync-confi.png" alt="screenshot of the sync settings options modal">
<img src="Synchronization_sync-confi.png"
alt="screenshot of the sync settings options modal">
</p>
<ol>
<li><strong>Testing Sync</strong>: Click the "Test sync" button to verify
@@ -45,7 +46,8 @@
to set up sync with a sync server.</li>
</ol>
<p>
<img src="Synchronization_sync-init.png" alt="screenshot of the sync from server setup page">
<img src="Synchronization_sync-init.png"
alt="screenshot of the sync from server setup page">
</p>
<ol>
<li><strong>Server Details</strong>: Configure the Trilium server address
@@ -54,7 +56,8 @@
you will see the following screen:</li>
</ol>
<p>
<img src="Synchronization_sync-in-pr.png" alt="screenshot of the sync page">
<img src="Synchronization_sync-in-pr.png"
alt="screenshot of the sync page">
</p>
<p>Once synchronization is complete, you will be automatically redirected
to the Trilium application.</p>

View File

@@ -18,8 +18,8 @@
of Trilium and its database, you can restore the <a href="#root/_help_ODY7qQn5m2FT">backup</a> that
is created prior to migration.</p>
<h2>Sync Compatibility</h2>
<p>The <a href="#root/_help_cbkrhQjrkKrh">synchronization</a> 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.</p>
<p>The <a href="#root/_help_cbkrhQjrkKrh">synchronization</a> 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.</p>

View File

@@ -17,8 +17,8 @@
</ul>
<p>Trilium will save these clippings as a new child note under a "clipper
inbox" note.</p>
<p>By default, that's the <a href="#root/_help_l0tKav7yLHGF">day note</a> but
you can override that by setting the <a href="#root/_help_zEY4DaJG4YT5">label</a> <code>clipperInbox</code>,
<p>By default, that's the <a href="#root/_help_l0tKav7yLHGF">day note</a> but you
can override that by setting the <a href="#root/_help_zEY4DaJG4YT5">label</a> <code>clipperInbox</code>,
on any other note.</p>
<p>If there's multiple clippings from the same page (and on the same day),
then they will be added to the same note.</p>

View File

@@ -18,17 +18,16 @@
<h2>Creating a new note of a different type via add link or new tab</h2>
<ul>
<li>When adding a <a href="#root/_help_QEAPj01N5f7w">link</a> in a&nbsp;<a class="reference-link"
href="#root/_help_iPIMuisry3hd">Text</a>&nbsp;note, type the desired title
of the new note and press Enter. Afterwards the type of the note will be
asked.</li>
href="#root/_help_iPIMuisry3hd">Text</a>&nbsp;note, type the desired title of
the new note and press Enter. Afterwards the type of the note will be asked.</li>
<li>Similarly, when creating a new tab, type the desired title and press Enter.</li>
</ul>
<h2>Changing the type of a note</h2>
<p>It is possible to change the type of a note after it has been created
via the <em>Basic Properties</em> tab in the&nbsp;<a class="reference-link"
href="#root/_help_BlN9DFI679QC">Ribbon</a>. 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 <a href="#root/_help_4FahAwuGTAwC">source of a note</a>.</p>
href="#root/_help_BlN9DFI679QC">Ribbon</a>. 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 <a href="#root/_help_4FahAwuGTAwC">source of a note</a>.</p>
<h2>Supported note types</h2>
<p>The following note types are supported by Trilium:</p>
<table>

View File

@@ -54,8 +54,8 @@
to display notes all across the tree, with advanced querying functionality.</p>
<p>To do so, simply start a&nbsp;<a class="reference-link" href="#root/_help_eIg8jdvaoNNd">Search</a>&nbsp;and
go to the <em>Collection Properties</em> tab in the&nbsp;<a class="reference-link"
href="#root/_help_BlN9DFI679QC">Ribbon</a>&nbsp;and select a desired type
of collection. To keep the search-based collection, use a&nbsp;<a class="reference-link"
href="#root/_help_BlN9DFI679QC">Ribbon</a>&nbsp;and select a desired type of
collection. To keep the search-based collection, use a&nbsp;<a class="reference-link"
href="#root/_help_m523cpzocqaD">Saved Search</a>.</p>
<aside class="admonition important">
<p>While in search, none of the collections will not display the child notes
@@ -88,8 +88,8 @@
(the one that lists the children notes at the bottom of a note) to display
information.</p>
<p>By default, new collections use predefined&nbsp;<a class="reference-link"
href="#root/_help_KC1HB96bqqHX">Templates</a>&nbsp;that are stored safely
in the&nbsp;<a class="reference-link" href="#root/_help_2mUhVmZK8RF3">Hidden Notes</a>&nbsp;to
href="#root/_help_KC1HB96bqqHX">Templates</a>&nbsp;that are stored safely in
the&nbsp;<a class="reference-link" href="#root/_help_2mUhVmZK8RF3">Hidden Notes</a>&nbsp;to
define some basic configuration such as the type of view, but also some&nbsp;
<a
class="reference-link" href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>&nbsp;to make editing easier.</p>

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:918/248;" src="Board View_image.png" width="918"
height="248">
<img style="aspect-ratio:918/248;" src="Board View_image.png"
width="918" height="248">
</figure>
<p>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,8 +11,8 @@
then groups each note by the value of the status attribute.</p>
<p>Notes are displayed recursively, so even the child notes of the child
notes will be displayed. However, unlike the&nbsp;<a class="reference-link"
href="#root/_help_2FvYrpmOXm29">Table View</a>, the notes are not displayed
in a hierarchy.</p>
href="#root/_help_2FvYrpmOXm29">Table View</a>, the notes are not displayed in
a hierarchy.</p>
<h2>Interaction with columns</h2>
<ul>
<li>Create a new column by pressing <em>Add Column</em> near the last column.

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:767/606;" src="4_Calendar View_image.png" width="767"
height="606">
<img style="aspect-ratio:767/606;" src="4_Calendar View_image.png"
width="767" height="606">
</figure>
<p>The Calendar view will display each child note in a calendar that has
a start date and optionally an end date, as an event.</p>
@@ -283,7 +283,8 @@
not having a <code>dateNote</code> attribute. Children of the child notes
will not be displayed.</li>
</ul>
<img src="8_Calendar View_image.png" width="1217" height="724">
<img src="8_Calendar View_image.png"
width="1217" height="724">
<h3>Using a different attribute as event title</h3>
<p>By default, events are displayed on the calendar by their note title.
@@ -308,8 +309,8 @@
<td>
<p>&nbsp;</p>
<figure class="image image-style-align-center">
<img style="aspect-ratio:445/124;" src="5_Calendar View_image.png" width="445"
height="124">
<img style="aspect-ratio:445/124;" src="5_Calendar View_image.png"
width="445" height="124">
</figure>
</td>
</tr>
@@ -334,7 +335,8 @@
<td><pre><code class="language-text-x-trilium-auto">#startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"</code></pre>
</td>
<td>
<img src="6_Calendar View_image.png" width="294" height="151">
<img src="6_Calendar View_image.png"
width="294" height="151">
</td>
</tr>
</tbody>
@@ -357,8 +359,8 @@
</td>
<td>
<figure class="image image-style-align-center">
<img style="aspect-ratio:296/150;" src="1_Calendar View_image.png" width="296"
height="150">
<img style="aspect-ratio:296/150;" src="1_Calendar View_image.png"
width="296" height="150">
</figure>
</td>
</tr>

View File

@@ -5,8 +5,8 @@
href="#root/_help_0ESUbbAxVnoK">Note List</a>.&nbsp;</p>
</aside>
<figure class="image image-style-align-center">
<img style="aspect-ratio:892/675;" src="9_Geo Map View_image.png" width="892"
height="675">
<img style="aspect-ratio:892/675;" src="9_Geo Map View_image.png"
width="892" height="675">
</figure>
<p>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 @@
<td>1</td>
<td>
<figure class="image">
<img style="aspect-ratio:483/413;" src="15_Geo Map View_image.png" width="483"
height="413">
<img style="aspect-ratio:483/413;" src="15_Geo Map View_image.png"
width="483" height="413">
</figure>
</td>
<td>Right click on any note on the note tree and select <em>Insert child note</em><em>Geo Map (beta)</em>.</td>
@@ -35,8 +35,8 @@
<td>2</td>
<td>
<figure class="image image-style-align-center image_resized" style="width:53.44%;">
<img style="aspect-ratio:1720/1396;" src="8_Geo Map View_image.png" width="1720"
height="1396">
<img style="aspect-ratio:1720/1396;" src="8_Geo Map View_image.png"
width="1720" height="1396">
</figure>
</td>
<td>By default the map will be empty and will show the entire world.</td>
@@ -136,8 +136,8 @@
<h2>How the location of the markers is stored</h2>
<p>The location of a marker is stored in the <code>#geolocation</code> attribute
of the child notes:</p>
<img src="18_Geo Map View_image.png" width="1288"
height="278">
<img src="18_Geo Map View_image.png"
width="1288" height="278">
<p>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.</p>
<h2>Repositioning markers</h2>
@@ -191,8 +191,8 @@ height="278">
</ol>
<h2>Icon and color of the markers</h2>
<figure class="image image-style-align-center">
<img style="aspect-ratio:523/295;" src="Geo Map View_image.jpg" alt="image"
width="523" height="295">
<img style="aspect-ratio:523/295;" src="Geo Map View_image.jpg"
alt="image" width="523" height="295">
</figure>
<p>The markers will have the same icon as the note.</p>
<p>It's possible to add a custom color to a marker by assigning them a <code>#color</code> attribute
@@ -216,8 +216,8 @@ height="278">
<td>1</td>
<td>
<figure class="image image-style-align-center image_resized" style="width:56.84%;">
<img style="aspect-ratio:732/918;" src="12_Geo Map View_image.png" width="732"
height="918">
<img style="aspect-ratio:732/918;" src="12_Geo Map View_image.png"
width="732" height="918">
</figure>
</td>
<td>Go to Google Maps on the web and look for a desired location, right click
@@ -233,8 +233,8 @@ height="278">
<td>2</td>
<td>
<figure class="image image-style-align-center image_resized" style="width:100%;">
<img style="aspect-ratio:518/84;" src="4_Geo Map View_image.png" width="518"
height="84">
<img style="aspect-ratio:518/84;" src="4_Geo Map View_image.png"
width="518" height="84">
</figure>
</td>
<td>In Trilium, create a child note under the map.</td>
@@ -243,8 +243,8 @@ height="278">
<td>3</td>
<td>
<figure class="image image-style-align-center image_resized" style="width:100%;">
<img style="aspect-ratio:1074/276;" src="11_Geo Map View_image.png" width="1074"
height="276">
<img style="aspect-ratio:1074/276;" src="11_Geo Map View_image.png"
width="1074" height="276">
</figure>
</td>
<td>And then go to Owned Attributes and type <code>#geolocation="</code>, then
@@ -313,8 +313,8 @@ height="278">
<td>1</td>
<td>
<figure class="image image-style-align-center">
<img style="aspect-ratio:226/74;" src="3_Geo Map View_image.png" width="226"
height="74">
<img style="aspect-ratio:226/74;" src="3_Geo Map View_image.png"
width="226" height="74">
</figure>
</td>
<td>To add a track, simply drag &amp; drop a .gpx file inside the geo map
@@ -324,8 +324,8 @@ height="278">
<td>2</td>
<td>
<figure class="image image-style-align-center">
<img style="aspect-ratio:322/222;" src="14_Geo Map View_image.png" width="322"
height="222">
<img style="aspect-ratio:322/222;" src="14_Geo Map View_image.png"
width="322" height="222">
</figure>
</td>
<td>In order for the file to be recognized as a GPS track, it needs to show
@@ -335,8 +335,8 @@ height="278">
<td>3</td>
<td>
<figure class="image image-style-align-center">
<img style="aspect-ratio:620/530;" src="6_Geo Map View_image.png" width="620"
height="530">
<img style="aspect-ratio:620/530;" src="6_Geo Map View_image.png"
width="620" height="530">
</figure>
</td>
<td>When going back to the map, the track should now be visible.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -400,8 +400,8 @@ height="278">
of the scale of the map.</p>
<h2>Troubleshooting</h2>
<figure class="image image-style-align-right image_resized" style="width:34.06%;">
<img style="aspect-ratio:678/499;" src="13_Geo Map View_image.png" width="678"
height="499">
<img style="aspect-ratio:678/499;" src="13_Geo Map View_image.png"
width="678" height="499">
</figure>
<h3>Grid-like artifacts on the map</h3>

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:990/590;" src="Grid View_image.png" width="990"
height="590">
<img style="aspect-ratio:990/590;" src="Grid View_image.png"
width="990" height="590">
</figure>
<p>This view presents the child notes in a grid format, allowing for a more
visual navigation experience.</p>
@@ -24,7 +24,7 @@
displayed instead.</li>
</ul>
<p>The grid view is also used by default in the&nbsp;<a class="reference-link"
href="#root/_help_0ESUbbAxVnoK">Note List</a>&nbsp;of every note, making
it easy to navigate to children notes.</p>
href="#root/_help_0ESUbbAxVnoK">Note List</a>&nbsp;of every note, making it easy
to navigate to children notes.</p>
<h2>Configuration</h2>
<p>Unlike most other view types, the grid view is not actually configurable.</p>

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:1387/758;" src="List View_image.png" width="1387"
height="758">
<img style="aspect-ratio:1387/758;" src="List View_image.png"
width="1387" height="758">
</figure>
<p>List view is similar to&nbsp;<a class="reference-link" href="#root/_help_8QqnMzx393bx">Grid View</a>,
but in the list view mode, each note is displayed in a single row with

View File

@@ -86,8 +86,8 @@
looking for the <em>Collection Properties</em> tab.</li>
<li>It's currently not possible to create custom themes, although it is planned.</li>
<li>Note that it is note possible to alter the CSS via&nbsp;<a class="reference-link"
href="#root/_help_AlhDUqhENtH7">Custom app-wide CSS</a>&nbsp;because the
slides are rendered isolated (in a shadow DOM).</li>
href="#root/_help_AlhDUqhENtH7">Custom app-wide CSS</a>&nbsp;because the slides
are rendered isolated (in a shadow DOM).</li>
</ul>
<p>At slide level:</p>
<ul>
@@ -105,29 +105,29 @@
and background colors) and font size. Code blocks and tables also work.</li>
<li>Try using more than just text notes, the presentation uses the same mechanism
as <a href="#root/_help_R9pX4DGra2Vt">shared notes</a> and&nbsp;<a class="reference-link"
href="#root/_help_0ESUbbAxVnoK">Note List</a>&nbsp;so it should be able
to display&nbsp;<a class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams</a>,&nbsp;
href="#root/_help_0ESUbbAxVnoK">Note List</a>&nbsp;so it should be able to display&nbsp;
<a
class="reference-link" href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;and&nbsp;<a class="reference-link" href="#root/_help_gBbsAeiuUxI5">Mind Map</a>&nbsp;in
full-screen (without the interactivity).
<ul>
<li>
<p>Consider using a transparent background for&nbsp;<a class="reference-link"
href="#root/_help_grjYqerjn243">Canvas</a>, if the slides have a custom
background (go to the hamburger menu in the Canvas, press the button select
a custom color and write <code>transparent</code>).</p>
</li>
<li>
<p>For&nbsp;<a class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams</a>,
some of them have a predefined background which can be changed via the
frontmatter. For example, for XY-charts:</p><pre><code class="language-text-x-trilium-auto">---
class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams</a>,&nbsp;<a class="reference-link" href="#root/_help_grjYqerjn243">Canvas</a>&nbsp;and&nbsp;
<a
class="reference-link" href="#root/_help_gBbsAeiuUxI5">Mind Map</a>&nbsp;in full-screen (without the interactivity).
<ul>
<li>
<p>Consider using a transparent background for&nbsp;<a class="reference-link"
href="#root/_help_grjYqerjn243">Canvas</a>, if the slides have a custom background
(go to the hamburger menu in the Canvas, press the button select a custom
color and write <code>transparent</code>).</p>
</li>
<li>
<p>For&nbsp;<a class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams</a>,
some of them have a predefined background which can be changed via the
frontmatter. For example, for XY-charts:</p><pre><code class="language-text-x-trilium-auto">---
config:
themeVariables:
xyChart:
backgroundColor: transparent
---</code></pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Under the hood</h2>

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:1050/259;" src="Table View_image.png" width="1050"
height="259">
<img style="aspect-ratio:1050/259;" src="Table View_image.png"
width="1050" height="259">
</figure>
<p>The table view displays information in a grid, where the rows are individual
notes and the columns are&nbsp;<a class="reference-link" href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>.
@@ -30,8 +30,8 @@
<li>This simply counts the note and is affected by sorting.</li>
</ul>
</li>
<li><a class="reference-link" href="#root/_help_m1lbrzyKDaRB">Note ID</a>,
representing the unique ID used internally by Trilium</li>
<li><a class="reference-link" href="#root/_help_m1lbrzyKDaRB">Note ID</a>, representing
the unique ID used internally by Trilium</li>
<li>The title of the note.</li>
</ul>
<h2>Interaction</h2>
@@ -113,8 +113,8 @@
<h2>Working with the data</h2>
<h3>Sorting by column</h3>
<p>By default, the order of the notes matches the order in the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>. However, it is possible
to sort the data by the values of a column:</p>
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>. However, it is possible to sort
the data by the values of a column:</p>
<ul>
<li>To do so, simply click on a column.</li>
<li>To switch between ascending or descending sort, simply click again on
@@ -170,8 +170,8 @@
<h2>Limitations</h2>
<ul>
<li>Multi-value labels and relations are not supported. If a&nbsp;<a class="reference-link"
href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>&nbsp;is defined
with a <em>Multi value</em> specificity, they will be ignored.</li>
href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>&nbsp;is defined with
a <em>Multi value</em> specificity, they will be ignored.</li>
<li>There is no support to filter the rows by a certain criteria. Consider
using the table view in search for that use case.</li>
</ul>
@@ -187,7 +187,6 @@
<li>It's not possible to add a new row.</li>
</ul>
<p>Columns are supported, by being defined as&nbsp;<a class="reference-link"
href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>&nbsp;to the&nbsp;
<a
class="reference-link" href="#root/_help_m523cpzocqaD">Saved Search</a>&nbsp;note.</p>
href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>&nbsp;to the&nbsp;<a class="reference-link"
href="#root/_help_m523cpzocqaD">Saved Search</a>&nbsp;note.</p>
<p>Editing is also supported.</p>

View File

@@ -11,7 +11,8 @@
<h2>Supported file types</h2>
<h3>PDFs</h3>
<figure class="image image-style-align-center image_resized" style="width:50%;">
<img style="aspect-ratio:933/666;" src="File_image.png" width="933" height="666">
<img style="aspect-ratio:933/666;" src="File_image.png"
width="933" height="666">
</figure>
<p>PDFs can be browsed directly from Trilium.</p>
<p>Interaction:</p>
@@ -31,8 +32,8 @@
</ul>
<h3>Images</h3>
<figure class="image image-style-align-center image_resized" style="width:50%;">
<img style="aspect-ratio:879/766;" src="4_File_image.png" width="879"
height="766">
<img style="aspect-ratio:879/766;" src="4_File_image.png"
width="879" height="766">
</figure>
<p>Interaction:</p>
<ul>
@@ -43,8 +44,8 @@
</ul>
<h3>Videos</h3>
<figure class="image image-style-align-center image_resized" style="width:50%;">
<img style="aspect-ratio:854/700;" src="1_File_image.png" width="854"
height="700">
<img style="aspect-ratio:854/700;" src="1_File_image.png"
width="854" height="700">
</figure>
<p>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&nbsp;
<a
class="reference-link" href="#root/_help_wX4HbRucYSDD">Database</a>&nbsp;to balloon as well as the any&nbsp;<a class="reference-link"
href="#root/_help_ODY7qQn5m2FT">Backup</a>&nbsp;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.</p>
href="#root/_help_ODY7qQn5m2FT">Backup</a>&nbsp;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.</p>
</aside>
<h3>Audio</h3>
<figure class="image image_resized image-style-align-center" style="width:50%;">
<img style="aspect-ratio:850/243;" src="3_File_image.png" width="850"
height="243">
<img style="aspect-ratio:850/243;" src="3_File_image.png"
width="850" height="243">
</figure>
<p>Adding a supported audio file will reveal a basic audio player that can
be used to play it.</p>
@@ -76,8 +77,8 @@
</ul>
<h3>Text files</h3>
<figure class="image image-style-align-center image_resized" style="width:50%;">
<img style="aspect-ratio:926/347;" src="2_File_image.png" width="926"
height="347">
<img style="aspect-ratio:926/347;" src="2_File_image.png"
width="926" height="347">
</figure>
<p>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.</p>
<h3>Unknown file types</h3>
<figure class="image image_resized image-style-align-center" style="width:50%;">
<img style="aspect-ratio:532/240;" src="5_File_image.png" width="532"
height="240">
<img style="aspect-ratio:532/240;" src="5_File_image.png"
width="532" height="240">
</figure>
<p>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 @@
</ul>
</li>
<li>It is <strong>not</strong> possible to change the note type of a <em>File</em> note.</li>
<li>Convert into an <a href="#root/_help_0vhv7lsOLy82">attachment</a> from the
<a
href="#root/_help_8YBEPzcpUgxw">note menu</a>.</li>
<li>Convert into an <a href="#root/_help_0vhv7lsOLy82">attachment</a> from the <a href="#root/_help_8YBEPzcpUgxw">note menu</a>.</li>
</ul>
<h2>Relation with other notes</h2>
<ul>

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center">
<img style="aspect-ratio:892/675;" src="Mind Map_image.png" width="892"
height="675">
<img style="aspect-ratio:892/675;" src="Mind Map_image.png"
width="892" height="675">
</figure>
<p>The mindmap allows for easy jotting down of ideas and storing them in
a hierarchical fashion.</p>
@@ -31,8 +31,8 @@
relative to the root node (to the left, to the right, or to both sides).</li>
<li>In the&nbsp;<a class="reference-link" href="#root/_help_XpOYSgsLkTJy">Floating buttons</a>&nbsp;area:
<ul>
<li>An <a href="#root/_help_0Ofbk1aSuVRu">image reference</a> can be copied,
to paste the mind map in a text note.</li>
<li>An <a href="#root/_help_0Ofbk1aSuVRu">image reference</a> can be copied, to paste
the mind map in a text note.</li>
<li>The diagram can be exported either as SVG (vectorial) or PNG (raster).</li>
</ul>
</li>

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-center image_resized" style="width:50%;">
<img style="aspect-ratio:856/763;" src="Note Map_image.png" width="856"
height="763">
<img style="aspect-ratio:856/763;" src="Note Map_image.png"
width="856" height="763">
</figure>
<p>A Note map is a note type which displays a standalone version of the feature
of the same name:&nbsp;<a href="#root/_help_BCkXAVs63Ttv">Note Map (Link map, Tree map)</a>.</p>

View File

@@ -11,12 +11,12 @@
</ul>
</li>
<li>An existing note can also be dragged from the&nbsp;<a class="reference-link"
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>. It will be placed at the
position it's dragged on.
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>. It will be placed at the position
it's dragged on.
<ul>
<li>Multiple notes can also be dragged via&nbsp;<a class="reference-link"
href="#root/_help_yTjUdsOi4CIE">Multiple selection</a>. The notes will
be positioned near the dragged position without overlapping.</li>
href="#root/_help_yTjUdsOi4CIE">Multiple selection</a>. The notes will be positioned
near the dragged position without overlapping.</li>
<li>The dragged note can be a sub-child of the map, or it can be at any arbitrary
position.</li>
</ul>
@@ -42,7 +42,8 @@
<h2>Development process demo</h2>
<p>This is a basic example how you can create simple diagram using relation
maps:</p>
<img src="1_Relation Map_relation-map-.png" width="934" height="667">
<img src="1_Relation Map_relation-map-.png"
width="934" height="667">
<p>And this is how you can create it:</p>
<img src="1_Relation Map_relation-map-.gif"
width="812" height="585">
@@ -58,8 +59,8 @@ width="812" height="585">
<h2>Family demo</h2>
<p>This is more complicated demo using some advanced concepts. Resulting
diagram is here:</p>
<img src="Relation Map_relation-map-.png" width="941"
height="758">
<img src="Relation Map_relation-map-.png"
width="941" height="758">
<p>This is how you get to it:</p>
<img src="Relation Map_relation-map-.gif"
width="812" height="585">

View File

@@ -1,6 +1,6 @@
<figure class="image">
<img style="aspect-ratio:601/216;" src="Render Note_image.png" width="601"
height="216">
<img style="aspect-ratio:601/216;" src="Render Note_image.png"
width="601" height="216">
</figure>
<p>Render Note is used in&nbsp;<a class="reference-link" href="#root/_help_CdNpE2pqjmI6">Scripting</a>.
It works by displaying the HTML of a&nbsp;<a class="reference-link" href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;note,

View File

@@ -10,6 +10,6 @@ style="width:50%;">
<h2>Location</h2>
<p>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 <code>#searchHome</code> label.
Additionally, for <a href="#root/_help_9sRHySam5fXb">workspaces</a>, you
can use the <code>#workspaceSearchHome</code> label to specify a storage
location for saved searches within that workspace.</p>
Additionally, for <a href="#root/_help_9sRHySam5fXb">workspaces</a>, you can use
the <code>#workspaceSearchHome</code> label to specify a storage location
for saved searches within that workspace.</p>

View File

@@ -7,8 +7,10 @@
<li>The <em>Floating toolbar</em> is hidden by default and only appears when
needed. In this mode there are actually two different toolbars:
<br>
<img src="1_Text_image.png" width="496" height="91">
<img src="2_Text_image.png" width="812" height="114">
<img src="1_Text_image.png" width="496"
height="91">
<img src="2_Text_image.png" width="812"
height="114">
</li>
<li>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&nbsp;
<a
class="reference-link" href="#root/_help_A9Oc6YKKc65v">Keyboard Shortcuts</a>. In addition, see&nbsp;<a class="reference-link"
href="#root/_help_QrtTYPmdd1qq">Markdown-like formatting</a>&nbsp;as an
alternative to the keyboard shortcuts.</p>
href="#root/_help_QrtTYPmdd1qq">Markdown-like formatting</a>&nbsp;as an alternative
to the keyboard shortcuts.</p>
<h2>Technical details</h2>
<p>For the text editing functionality, Trilium uses a commercial product
(with an open-source base) called&nbsp;<a class="reference-link" href="#root/_help_MI26XDLSAlCD">CKEditor</a>.

View File

@@ -1,5 +1,5 @@
<p>Bookmarks allows creating <a href="#root/_help_QEAPj01N5f7w">links</a> to
a certain part of a note, such as referencing a particular heading.</p>
<p>Bookmarks allows creating <a href="#root/_help_QEAPj01N5f7w">links</a> to a certain
part of a note, such as referencing a particular heading.</p>
<p>Technically, bookmarks are HTML anchors.</p>
<p>This feature was introduced in TriliumNext 0.94.0.</p>
<h2>Interaction</h2>
@@ -8,9 +8,11 @@
<ul>
<li>Place the cursor at the desired position where to place the bookmark.</li>
<li>Look for the
<img src="Bookmarks_plus.png" width="15" height="16">button in the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>,
<img src="Bookmarks_plus.png"
width="15" height="16">button in the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>,
and then press the
<img src="1_Bookmarks_plus.png" width="12" height="15">button.</li>
<img src="1_Bookmarks_plus.png"
width="12" height="15">button.</li>
</ul>
</li>
<li>To place a link to a bookmark:

View File

@@ -8,8 +8,8 @@
as shell commands (<code>git</code> in this case).</p>
<p>To insert an inline code:</p>
<ul>
<li>Via the&nbsp;<a href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>,
look for the
<li>Via the&nbsp;<a href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>, look
for the
<img src="3_Developer-specific formatt.png">button.</li>
<li>Type `code` where <code>code</code> is the desired text to be automatically
formatted as inline code.</li>
@@ -21,8 +21,7 @@
</p>
<p>A code block with JavaScript syntax highlight enabled.</p>
<p>Note that these are not meant for very large portions of code. Use the
dedicated&nbsp;<a href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;note type
instead.</p>
dedicated&nbsp;<a href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;note type instead.</p>
<p>See the dedicated documentation for more information:&nbsp;<a href="#root/_help_QxEyIjRBizuC">Code blocks</a>
</p>
<h3>Keyboard shortcuts</h3>

View File

@@ -55,8 +55,7 @@
<p>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&nbsp;<a class="reference-link"
href="#root/_help_CoFPLs3dRlXc">Read-Only Notes</a>, this limitation is
not applied.</p>
href="#root/_help_CoFPLs3dRlXc">Read-Only Notes</a>, this limitation is not applied.</p>
<p>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.</p>
@@ -97,9 +96,9 @@
<a
class="reference-link" href="#root/_help_6f9hih2hXXZk">Code</a>&nbsp;note type.</p>
<p>The supported languages can be adjusted by going to&nbsp;<a class="reference-link"
href="#root/_help_4TIF1oA4VQRO">Options</a>, then <em>Code Notes</em> and
looking for the <em>Available MIME types in the dropdown</em> section. Simply
check any of the items to add them to the list, or uncheck them to remove
them from the list.</p>
href="#root/_help_4TIF1oA4VQRO">Options</a>, then <em>Code Notes</em> and looking
for the <em>Available MIME types in the dropdown</em> section. Simply check
any of the items to add them to the list, or uncheck them to remove them
from the list.</p>
<p>Note that the list of languages is not immediately refreshed, you'd have
to manually <a href="#root/_help_s8alTXmpFR61">refresh the application</a>.</p>

View File

@@ -1,14 +1,14 @@
<figure class="image image-style-align-right">
<img style="aspect-ratio:199/187;" src="1_Footnotes_image.png" width="199"
height="187">
<img style="aspect-ratio:199/187;" src="1_Footnotes_image.png"
width="199" height="187">
</figure>
<p>Footnotes are a good place to insert references to a paragraph or details
that are displayed at the bottom of the note.</p>
<h2>Interaction</h2>
<ul>
<li>To insert a new footnote, press
<img src="Footnotes_image.png" width="17"
height="12">(or press the right arrow and select <em>New footnote</em>).</li>
<img src="Footnotes_image.png"
width="17" height="12">(or press the right arrow and select <em>New footnote</em>).</li>
<li>To insert a reference to an existing footnote, press the right arrow and
select <em>Insert footnote</em>, followed by the number of the footnote
to insert.</li>

View File

@@ -79,7 +79,8 @@
the <em>Remove formatting</em> toolbar item.</p>
<h2>Remove formatting</h2>
<p>The
<img src="1_General formatting_image.png" width="17" height="16"> <em>Remove formatting</em> button is a quick way to eliminate the general
<img src="1_General formatting_image.png"
width="17" height="16"> <em>Remove formatting</em> button is a quick way to eliminate the general
formatting styling of a particular text.</p>
<p>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,

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-right">
<img style="aspect-ratio:250/150;" src="Highlights list_image.png" width="250"
height="150">
<img style="aspect-ratio:250/150;" src="Highlights list_image.png"
width="250" height="150">
</figure>
<p>Similar to the&nbsp;<a class="reference-link" href="#root/_help_BFvAtE74rbP6">Table of contents</a>,
but instead of headings this feature will list highlighted text from a

View File

@@ -1,10 +1,9 @@
<p>Trilium supports storing and displaying images. Supported formats are
JPEG, PNG and GIF.</p>
<p>An image can be uploaded in the form of note's <a href="#root/_help_0vhv7lsOLy82">attachment</a> or
as a standalone <a href="#root/_help_kBrnXNG3Hplm">note</a> placed into the
<a
href="#root/_help_kBrnXNG3Hplm">note tree</a>. Its reference can be copied into a text note, in order
to display it in the text itself.</p>
as a standalone <a href="#root/_help_kBrnXNG3Hplm">note</a> placed into the <a href="#root/_help_kBrnXNG3Hplm">note tree</a>.
Its reference can be copied into a text note, in order to display it in
the text itself.</p>
<h2>Uploading images</h2>
<p>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.</p>

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-right image_resized" style="width:50.47%;">
<img style="aspect-ratio:880/553;" src="Image references_image.png" width="880"
height="553">
<img style="aspect-ratio:880/553;" src="Image references_image.png"
width="880" height="553">
</figure>
<p>Image references are an easy way to embed the preview of another note
type into a&nbsp;<a class="reference-link" href="#root/_help_iPIMuisry3hd">Text</a>&nbsp;note.</p>

View File

@@ -7,9 +7,9 @@
<img src="Include Note_image.png">button. There is also a keyboard shortcut defined for it but it is not
allocated by default.</p>
<h2>Included notes in the share functionality</h2>
<p>If a <a href="#root/_help_R9pX4DGra2Vt">shared note</a> 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.</p>
<p>If a <a href="#root/_help_R9pX4DGra2Vt">shared note</a> 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.</p>
<p>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 <code>#shareHiddenFromTree</code>.</p>

View File

@@ -1,13 +1,14 @@
<p>Press the
<img src="4_Insert buttons_image.png" width="34" height="16">button in the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>&nbsp;to
<img src="4_Insert buttons_image.png"
width="34" height="16">button in the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>&nbsp;to
reveal special inserable items and blocks such as symbols, Math expressions
and separators.</p>
<h2>Bookmarks</h2>
<p>See the dedicated&nbsp;<a class="reference-link" href="#root/_help_oSuaNgyyKnhu">Bookmarks</a>&nbsp;section.</p>
<h2>Emoji</h2>
<figure class="image image-style-align-right image_resized" style="width:42.4%;">
<img style="aspect-ratio:366/410;" src="Insert buttons_plus.png" width="366"
height="410">
<img style="aspect-ratio:366/410;" src="Insert buttons_plus.png"
width="366" height="410">
</figure>
<p>This feature allows inserting Unicode emoji characters. Simply select
a category and a desired emoji to insert it.</p>
@@ -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 <kbd>Enter</kbd> to insert it.</p>
<img
src="1_Insert buttons_plus.png" width="272" height="187">
src="1_Insert buttons_plus.png" width="272"
height="187">
<h2>Symbols</h2>
<figure class="image image-style-align-right">
<img style="aspect-ratio:346/322;" src="1_Insert buttons_image.png" width="346"
height="322">
<img style="aspect-ratio:346/322;" src="1_Insert buttons_image.png"
width="346" height="322">
</figure>
<p>Pressing the
<img src="7_Insert buttons_image.png" width="18" height="15">button will reveal a popup window displaying a list of characters that
<img src="7_Insert buttons_image.png"
width="18" height="15">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.</p>
<p>Interaction:</p>
@@ -39,14 +42,15 @@ src="1_Insert buttons_plus.png" width="272" height="187">
<p>See the dedicated&nbsp;<a class="reference-link" href="#root/_help_YfYAtQBcfo5V">Math Equations</a>&nbsp;page.</p>
<h2>Mermaid diagram</h2>
<p>Press the
<img src="2_Insert buttons_image.png" width="16" height="17">button to create an inline Mermaid diagram.</p>
<img src="2_Insert buttons_image.png"
width="16" height="17">button to create an inline Mermaid diagram.</p>
<p>This feature is quite similar to the&nbsp;<a class="reference-link" href="#root/_help_s1aBHPd79XYj">Mermaid Diagrams</a>&nbsp;note
types and is meant as an alternative to it for simple diagrams. For more
complex diagrams, use the&nbsp;<a class="reference-link" href="#root/_help_nBAXQFj20hS1">Include Note</a>&nbsp;feature
for a dedicated Mermaid note.</p>
<figure class="image">
<img style="aspect-ratio:1174/358;" src="6_Insert buttons_image.png" width="1174"
height="358">
<img style="aspect-ratio:1174/358;" src="6_Insert buttons_image.png"
width="1174" height="358">
</figure>
<h2>Horizontal ruler</h2>
@@ -55,12 +59,13 @@ src="1_Insert buttons_plus.png" width="272" height="187">
<img src="5_Insert buttons_image.png"
width="18" height="16">button in the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>.</p>
<img
src="3_Insert buttons_image.png" width="502" height="95">
src="3_Insert buttons_image.png" width="502"
height="95">
<p>Alternatively, it's possible to insert a horizontal ruler by typing <code>---</code>.</p>
<h2>Page break</h2>
<figure class="image image-style-align-right">
<img style="aspect-ratio:371/79;" src="8_Insert buttons_image.png" width="371"
height="79">
<img style="aspect-ratio:371/79;" src="8_Insert buttons_image.png"
width="371" height="79">
</figure>
<p>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.</p>
<ul>
<li>To insert a page break, press the
<img src="Insert buttons_image.png" width="20"
height="19">in the formatting toolbar.</li>
<img src="Insert buttons_image.png"
width="20" height="19">in the formatting toolbar.</li>
<li>To insert many page breaks at once, insert a page break first, click on
it and press <kbd>Ctrl</kbd>+<kbd>C</kbd>. Then use <kbd>Ctrl</kbd>+<kbd>V</kbd>,
to paste as many times as needed.</li>

View File

@@ -111,10 +111,10 @@
<aside class="admonition tip">
<p>This section of keyboard shortcuts presents a subset of the keyboard shortcuts
as supported by the editor technology we are using,&nbsp;<a class="reference-link"
href="#root/_help_MI26XDLSAlCD">CKEditor</a>. The shortcuts were taken
from the <a href="https://ckeditor.com/docs/ckeditor5/latest/features/accessibility.html#keyboard-shortcuts">official documentation</a>.
Note that not all the shortcuts in the original documentation are applicable
(due to using a different configuration).</p>
href="#root/_help_MI26XDLSAlCD">CKEditor</a>. The shortcuts were taken from the
<a
href="https://ckeditor.com/docs/ckeditor5/latest/features/accessibility.html#keyboard-shortcuts">official documentation</a>. Note that not all the shortcuts in the original
documentation are applicable (due to using a different configuration).</p>
</aside>
<h3>Content editing</h3>
<table>

View File

@@ -31,5 +31,4 @@
press enter and you have a link.</p>
<h2>Note map</h2>
<p>Trilium provides a visualisation of incoming and outgoing links for a
particular note. See <a href="#root/_help_BCkXAVs63Ttv">note map</a> for
details.</p>
particular note. See <a href="#root/_help_BCkXAVs63Ttv">note map</a> for details.</p>

View File

@@ -4,7 +4,8 @@
<p>To create a link without a custom text:</p>
<ul>
<li>Press
<img src="1_External links_image.png" width="15" height="16">in the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>:
<img src="1_External links_image.png"
width="15" height="16">in the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>:
<ul>
<li>A popup will appear, type or paste the URL in the box.</li>
<li>Press <kbd>Enter</kbd> or the check mark icon to confirm.</li>
@@ -29,7 +30,8 @@
will remain.</li>
<li>To modify the link, click on the link to display the popup and press the
<img
src="External links_image.png" width="18" height="18"> <em>Edit link</em> button.</li>
src="External links_image.png" width="18"
height="18"> <em>Edit link</em> button.</li>
<li>To remove a link, click on it and press the
<img src="2_External links_image.png"
width="18" height="18"> <em>Unlink</em> button.</li>

View File

@@ -1,11 +1,14 @@
<p>There are three types of lists supported by text notes:</p>
<ul>
<li>
<img src="4_Lists_image.png" width="17" height="13">Bulleted lists (also known as unordered lists).</li>
<img src="4_Lists_image.png" width="17"
height="13">Bulleted lists (also known as unordered lists).</li>
<li>
<img src="1_Lists_image.png" width="18" height="16">Numbered lists (or ordered lists).</li>
<img src="1_Lists_image.png" width="18"
height="16">Numbered lists (or ordered lists).</li>
<li>
<img src="Lists_image.png" width="19" height="13">To-do lists</li>
<img src="Lists_image.png" width="19"
height="13">To-do lists</li>
</ul>
<p>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 @@
<li>To exit out of the list, press <kbd>Enter</kbd> twice.</li>
<li>To merge two lists, simply delete the gap between them.</li>
<li>To create nested lists, simply use the
<img src="7_Lists_image.png" width="17"
height="14">button (see <em>Indentation</em> in&nbsp;<a class="reference-link" href="#root/_help_dEHYtoWWi8ct">Other features</a>)
<img src="7_Lists_image.png"
width="17" height="14">button (see <em>Indentation</em> in&nbsp;<a class="reference-link" href="#root/_help_dEHYtoWWi8ct">Other features</a>)
or the <kbd>Tab</kbd> key. To decrease the nesting level for the current
element, press <kbd>Shift</kbd>+<kbd>Tab</kbd>.</li>
</ul>
@@ -71,7 +74,8 @@
<td>4</td>
<td>
<img class="image_resized" style="aspect-ratio:676/112;width:98.29%;"
src="10_Lists_image.png" width="676" height="112">
src="10_Lists_image.png" width="676"
height="112">
</td>
<td>At this point, insert any desired block-level item such as a code block.</td>
</tr>
@@ -79,7 +83,8 @@
<td>5</td>
<td>
<img class="image_resized" style="aspect-ratio:675/129;width:94.22%;"
src="8_Lists_image.png" width="675" height="129">
src="8_Lists_image.png" width="675"
height="129">
</td>
<td>To continue with a new bullet point, press Enter until the cursor moves
to a new blank position.</td>

View File

@@ -1,7 +1,7 @@
<p>Markdown-like formatting allows inserting some basic formatting by typing
the Markdown equivalent. Note that this does not mean that&nbsp;<a class="reference-link"
href="#root/_help_iPIMuisry3hd">Text</a>&nbsp;notes supports Markdown,
these are just some convenience shortcuts.</p>
href="#root/_help_iPIMuisry3hd">Text</a>&nbsp;notes supports Markdown, these
are just some convenience shortcuts.</p>
<p>To import more complex formatting into text notes, consider using the
<a
href="#root/_help_dEHYtoWWi8ct"><em>Import from Markdown</em>

View File

@@ -1,10 +1,11 @@
<figure class="image image-style-align-right">
<img style="aspect-ratio:350/193;" src="Math Equations_image.png" width="350"
height="193">
<img style="aspect-ratio:350/193;" src="Math Equations_image.png"
width="350" height="193">
</figure>
<p>Within text notes, it's possible to enter mathematical equations using
the
<img src="1_Math Equations_image.png" width="20" height="15">button from the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>&nbsp;(generally
<img src="1_Math Equations_image.png"
width="20" height="15">button from the&nbsp;<a class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>&nbsp;(generally
found under the&nbsp;<a class="reference-link" href="#root/_help_CohkqWQC1iBv">Insert buttons</a>).</p>
<p>The mathematical expression must be written in the TeX format. There is
no visual editor for the math equations, only a preview.&nbsp;</p>
@@ -30,8 +31,8 @@
surrounded by <code>$</code> characters for inline math expressions, and <code>$$</code> for
display mode.</p>
<p>If you notice any issue with the Markdown import/export for equations,
feel free to <a href="#root/_help_wy8So3yZZlH9">report</a> it while providing
the equation that causes issues.</p>
feel free to <a href="#root/_help_wy8So3yZZlH9">report</a> it while providing the
equation that causes issues.</p>
<h2>Formatting the equation</h2>
<p>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

View File

@@ -1,25 +1,27 @@
<h2>Indentation</h2>
<figure class="image image-style-align-right">
<img style="aspect-ratio:201/124;" src="6_Other features_image.png" width="201"
height="124">
<img style="aspect-ratio:201/124;" src="6_Other features_image.png"
width="201" height="124">
</figure>
<p>Paragraphs can be indented to the right using the &nbsp;button from the&nbsp;
<a
class="reference-link" href="#root/_help_nRhnJkTT8cPs">Formatting toolbar</a>.</p>
<ul>
<li>Press
<img src="5_Other features_image.png" width="17" height="14">to increase the indentation of the current paragraph by one. Can be pressed
<img src="5_Other features_image.png"
width="17" height="14">to increase the indentation of the current paragraph by one. Can be pressed
multiple times if needed.</li>
<li>Press
<img src="1_Other features_image.png" width="17" height="14">to decrease the indentation of a current paragraph. The button will be
<img src="1_Other features_image.png"
width="17" height="14">to decrease the indentation of a current paragraph. The button will be
disabled if it is already at the minimum indentation level.</li>
<li>For convenience, keyboard shortcuts are also available. Press <kbd>Tab</kbd> to
indent or <kbd>Shift</kbd>+<kbd>Tab</kbd> to decrease the indentation. These
shortcuts work even if the cursor is not at the beginning of a paragraph
or a list.</li>
<li>Apart from paragraphs, the indent button is also enabled in&nbsp;<a class="reference-link"
href="#root/_help_S6Xx8QIWTV66">Lists</a>, where it can be used to create
nested lists.</li>
href="#root/_help_S6Xx8QIWTV66">Lists</a>, where it can be used to create nested
lists.</li>
</ul>
<h2>Markdown import</h2>
<p>If the clipboard contains Markdown text, it can be easily imported into
@@ -38,14 +40,16 @@
not have access to the clipboard.</p>
<h2>Cut to subnote</h2>
<p>The
<img src="Other features_image.png" width="16" height="20">button will create a child note with the selected text. For more information,
<img src="Other features_image.png"
width="16" height="20">button will create a child note with the selected text. For more information,
see&nbsp;<a class="reference-link" href="#root/_help_2x0ZAX9ePtzV">Cut to subnote</a>.</p>
<h2>Find and replace</h2>
<figure class="image image-style-align-right">
<img style="aspect-ratio:394/203;" src="4_Other features_image.png" width="394"
height="203">
<img style="aspect-ratio:394/203;" src="4_Other features_image.png"
width="394" height="203">
</figure>
<p>The
<img src="3_Other features_image.png" width="18" height="17">button will open the editor's dedicated search and replace functionality.</p>
<img src="3_Other features_image.png"
width="18" height="17">button will open the editor's dedicated search and replace functionality.</p>
<p>Alternatively, the <kbd>Ctrl</kbd>+<kbd>F</kbd> combination can be pressed
to show the dialog.</p>

View File

@@ -1,6 +1,6 @@
<figure class="image image-style-align-right">
<img style="aspect-ratio:419/571;" src="Slash Commands_image.png" width="419"
height="571">
<img style="aspect-ratio:419/571;" src="Slash Commands_image.png"
width="419" height="571">
</figure>
<aside class="admonition note">
<p>This is a premium feature of the editor we are using (CKEditor) and we
@@ -27,8 +27,8 @@
<p>Apart from the common set of commands, some features are specially integrated
with the slash commands:</p>
<ul>
<li>For <a href="#root/_help_NwBbFdNZ9h7O">admonitions</a>, each admonition
type (e.g. note, tip) will be individually displayed.</li>
<li>For <a href="#root/_help_NwBbFdNZ9h7O">admonitions</a>, each admonition type
(e.g. note, tip) will be individually displayed.</li>
<li>Every&nbsp;<a class="reference-link" href="#root/_help_pwc194wlRzcH">Text Snippets</a>&nbsp;will
also appear individually, making it easy to insert them.</li>
</ul>

Some files were not shown because too many files have changed in this diff Show More