mirror of
https://github.com/zadam/trilium.git
synced 2025-11-15 09:45:52 +01:00
Merge remote-tracking branch 'origin/main' into feature/table_view
This commit is contained in:
2
.github/actions/build-electron/action.yml
vendored
2
.github/actions/build-electron/action.yml
vendored
@@ -85,7 +85,7 @@ runs:
|
||||
APPLE_ID: ${{ env.APPLE_ID }}
|
||||
APPLE_ID_PASSWORD: ${{ env.APPLE_ID_PASSWORD }}
|
||||
WINDOWS_SIGN_EXECUTABLE: ${{ env.WINDOWS_SIGN_EXECUTABLE }}
|
||||
TRILIUM_ARTIFACT_NAME_HINT: TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}
|
||||
TRILIUM_ARTIFACT_NAME_HINT: TriliumNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}
|
||||
run: pnpm nx --project=desktop electron-forge:make -- --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }}
|
||||
|
||||
# Add DMG signing step
|
||||
|
||||
2
.github/actions/build-server/action.yml
vendored
2
.github/actions/build-server/action.yml
vendored
@@ -30,4 +30,4 @@ runs:
|
||||
mkdir -p upload
|
||||
file=$(find ./apps/server/out -name '*.tar.xz' -print -quit)
|
||||
name=${{ github.ref_name }}
|
||||
cp "$file" "upload/TriliumNextNotes-Server-${name//\//-}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz"
|
||||
cp "$file" "upload/TriliumNotes-Server-${name//\//-}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz"
|
||||
|
||||
2
.github/workflows/nightly.yml
vendored
2
.github/workflows/nightly.yml
vendored
@@ -92,7 +92,7 @@ jobs:
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
with:
|
||||
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}
|
||||
name: TriliumNotes ${{ matrix.os.name }} ${{ matrix.arch }}
|
||||
path: apps/desktop/upload
|
||||
|
||||
nightly-server:
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"@playwright/test": "1.53.1",
|
||||
"@stylistic/eslint-plugin": "5.0.0",
|
||||
"@types/express": "5.0.3",
|
||||
"@types/node": "22.15.32",
|
||||
"@types/node": "22.15.33",
|
||||
"@types/yargs": "17.0.33",
|
||||
"@vitest/coverage-v8": "3.2.4",
|
||||
"eslint": "9.29.0",
|
||||
|
||||
@@ -61,13 +61,13 @@
|
||||
"@ckeditor/ckeditor5-inspector": "4.1.0",
|
||||
"@types/bootstrap": "5.2.10",
|
||||
"@types/jquery": "3.5.32",
|
||||
"@types/leaflet": "1.9.18",
|
||||
"@types/leaflet": "1.9.19",
|
||||
"@types/leaflet-gpx": "1.3.7",
|
||||
"@types/mark.js": "8.11.12",
|
||||
"copy-webpack-plugin": "13.0.0",
|
||||
"happy-dom": "18.0.1",
|
||||
"script-loader": "0.7.2",
|
||||
"vite-plugin-static-copy": "3.0.2"
|
||||
"vite-plugin-static-copy": "3.1.0"
|
||||
},
|
||||
"nx": {
|
||||
"name": "client",
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"dotenv": "16.5.0",
|
||||
"electron": "36.5.0"
|
||||
"dotenv": "16.6.0",
|
||||
"electron": "36.6.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"@types/electron-squirrel-startup": "1.0.2",
|
||||
"@triliumnext/server": "workspace:*",
|
||||
"copy-webpack-plugin": "13.0.0",
|
||||
"electron": "36.5.0",
|
||||
"electron": "36.6.0",
|
||||
"@electron-forge/cli": "7.8.1",
|
||||
"@electron-forge/maker-deb": "7.8.1",
|
||||
"@electron-forge/maker-dmg": "7.8.1",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"@triliumnext/desktop": "workspace:*",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"copy-webpack-plugin": "13.0.0",
|
||||
"electron": "36.5.0",
|
||||
"electron": "36.6.0",
|
||||
"fs-extra": "11.3.0"
|
||||
},
|
||||
"nx": {
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"dotenv": "16.5.0"
|
||||
"dotenv": "16.6.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:22.16.0-bullseye-slim AS builder
|
||||
FROM node:22.17.0-bullseye-slim AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:22.16.0-bullseye-slim
|
||||
FROM node:22.17.0-bullseye-slim
|
||||
# Install only runtime dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:22.16.0-alpine AS builder
|
||||
FROM node:22.17.0-alpine AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:22.16.0-alpine
|
||||
FROM node:22.17.0-alpine
|
||||
# Install runtime dependencies
|
||||
RUN apk add --no-cache su-exec shadow
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:22.16.0-alpine AS builder
|
||||
FROM node:22.17.0-alpine AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:22.16.0-alpine
|
||||
FROM node:22.17.0-alpine
|
||||
# Create a non-root user with configurable UID/GID
|
||||
ARG USER=trilium
|
||||
ARG UID=1001
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:22.16.0-bullseye-slim AS builder
|
||||
FROM node:22.17.0-bullseye-slim AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:22.16.0-bullseye-slim
|
||||
FROM node:22.17.0-bullseye-slim
|
||||
# Create a non-root user with configurable UID/GID
|
||||
ARG USER=trilium
|
||||
ARG UID=1001
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"better-sqlite3": "12.1.0"
|
||||
"better-sqlite3": "12.1.1"
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
"description": "The server-side component of TriliumNext, which exposes the client via the web, allows for sync and provides a REST API for both internal and external use.",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"better-sqlite3": "12.1.0"
|
||||
"better-sqlite3": "12.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@electron/remote": "2.1.2",
|
||||
@@ -39,7 +39,7 @@
|
||||
"@types/ws": "8.18.1",
|
||||
"@types/xml2js": "0.4.14",
|
||||
"express-http-proxy": "2.1.1",
|
||||
"@anthropic-ai/sdk": "0.54.0",
|
||||
"@anthropic-ai/sdk": "0.55.0",
|
||||
"@braintree/sanitize-url": "7.1.1",
|
||||
"@triliumnext/commons": "workspace:*",
|
||||
"@triliumnext/express-partial-content": "workspace:*",
|
||||
@@ -59,7 +59,7 @@
|
||||
"debounce": "2.2.0",
|
||||
"debug": "4.4.1",
|
||||
"ejs": "3.1.10",
|
||||
"electron": "36.5.0",
|
||||
"electron": "36.6.0",
|
||||
"electron-debug": "4.1.0",
|
||||
"electron-window-state": "5.0.3",
|
||||
"escape-html": "1.0.3",
|
||||
@@ -88,7 +88,7 @@
|
||||
"multer": "2.0.1",
|
||||
"normalize-strings": "1.1.1",
|
||||
"ollama": "0.5.16",
|
||||
"openai": "5.7.0",
|
||||
"openai": "5.8.1",
|
||||
"rand-token": "1.0.1",
|
||||
"safe-compare": "1.1.4",
|
||||
"sanitize-filename": "1.6.3",
|
||||
|
||||
@@ -48,7 +48,7 @@ chmod 755 $BUILD_DIR/trilium.sh
|
||||
|
||||
VERSION=`jq -r ".version" package.json`
|
||||
|
||||
ARCHIVE_NAME="TriliumNextNotes-Server-${VERSION}-linux-${ARCH}"
|
||||
ARCHIVE_NAME="TriliumNotes-Server-${VERSION}-linux-${ARCH}"
|
||||
echo "Creating Archive $ARCHIVE_NAME..."
|
||||
|
||||
mkdir $DIST_DIR
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
<h2>Steps</h2>
|
||||
<ul>
|
||||
<li>SSH into your server</li>
|
||||
<li>use <code>wget</code> (or <code>curl</code>) to download latest <code>TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz</code> (copy
|
||||
<li>use <code>wget</code> (or <code>curl</code>) to download latest <code>TriliumNotes-Server-[VERSION]-linux-x64.tar.xz</code> (copy
|
||||
link from <a href="https://github.com/TriliumNext/Notes/releases">release page</a>,
|
||||
notice <code>-Server</code> suffix) on your server.</li>
|
||||
<li>unpack the archive, e.g. using <code>tar -xf -d TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz</code>
|
||||
<li>unpack the archive, e.g. using <code>tar -xf -d TriliumNotes-Server-[VERSION]-linux-x64.tar.xz</code>
|
||||
</li>
|
||||
<li><code>cd trilium-linux-x64-server</code>
|
||||
</li>
|
||||
@@ -27,7 +27,7 @@
|
||||
<h2>Configure Trilium to auto-run on boot with systemd</h2>
|
||||
<ul>
|
||||
<li>After downloading, extract and move Trilium:</li>
|
||||
</ul><pre><code class="language-text-x-trilium-auto">tar -xvf TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz
|
||||
</ul><pre><code class="language-text-x-trilium-auto">tar -xvf TriliumNotes-Server-[VERSION]-linux-x64.tar.xz
|
||||
sudo mv trilium-linux-x64-server /opt/trilium</code></pre>
|
||||
<ul>
|
||||
<li>Create the service:</li>
|
||||
|
||||
22
apps/server/src/becca/entities/brevision.spec.ts
Normal file
22
apps/server/src/becca/entities/brevision.spec.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import BRevision from "./brevision.js";
|
||||
|
||||
describe("Revision", () => {
|
||||
it("handles note with empty title properly", () => {
|
||||
const revision = new BRevision({
|
||||
revisionId: "4omM5OvlLhOw",
|
||||
noteId: "WHMg7iFCRG3Z",
|
||||
type: "text",
|
||||
mime: "text/html",
|
||||
isProtected: false,
|
||||
title: "",
|
||||
blobId: "",
|
||||
dateLastEdited: "2025-06-27 14:10:39.688+0300",
|
||||
dateCreated: "2025-06-27 14:10:39.688+0300",
|
||||
utcDateLastEdited: "2025-06-27 14:10:39.688+0300",
|
||||
utcDateCreated: "2025-06-27 14:10:39.688+0300",
|
||||
utcDateModified: "2025-06-27 14:10:39.688+0300"
|
||||
});
|
||||
const pojo = revision.getPojo();
|
||||
expect(pojo.title).toBeDefined();
|
||||
});
|
||||
});
|
||||
@@ -192,7 +192,7 @@ class BRevision extends AbstractBeccaEntity<BRevision> {
|
||||
type: this.type,
|
||||
mime: this.mime,
|
||||
isProtected: this.isProtected,
|
||||
title: this.title || undefined,
|
||||
title: this.title,
|
||||
blobId: this.blobId,
|
||||
dateLastEdited: this.dateLastEdited,
|
||||
dateCreated: this.dateCreated,
|
||||
@@ -211,10 +211,10 @@ class BRevision extends AbstractBeccaEntity<BRevision> {
|
||||
|
||||
if (pojo.isProtected) {
|
||||
if (protectedSessionService.isProtectedSessionAvailable()) {
|
||||
pojo.title = protectedSessionService.encrypt(this.title) || undefined;
|
||||
pojo.title = protectedSessionService.encrypt(this.title) ?? "";
|
||||
} else {
|
||||
// updating protected note outside of protected session means we will keep original ciphertexts
|
||||
delete pojo.title;
|
||||
pojo.title = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,17 @@ import type Becca from "../becca/becca-interface.js";
|
||||
import type { NoteParams } from "./note-interface.js";
|
||||
import type { ApiParams } from "./backend_script_api_interface.js";
|
||||
|
||||
// Dayjs plugins
|
||||
import isSameOrBefore from "dayjs/plugin/isSameOrBefore";
|
||||
import isSameOrAfter from "dayjs/plugin/isSameOrAfter";
|
||||
import isBetween from "dayjs/plugin/isBetween";
|
||||
import advancedFormat from "dayjs/plugin/advancedFormat.js";
|
||||
|
||||
dayjs.extend(isSameOrBefore);
|
||||
dayjs.extend(isSameOrAfter);
|
||||
dayjs.extend(isBetween);
|
||||
dayjs.extend(advancedFormat);
|
||||
|
||||
/**
|
||||
* A whole number
|
||||
* @typedef {number} int
|
||||
|
||||
114
apps/server/src/services/script.spec.ts
Normal file
114
apps/server/src/services/script.spec.ts
Normal file
@@ -0,0 +1,114 @@
|
||||
import becca from "../becca/becca.js";
|
||||
import { note, NoteBuilder } from "../test/becca_mocking.js";
|
||||
import cls from "./cls.js";
|
||||
import { executeBundle, getScriptBundle } from "./script.js";
|
||||
import BBranch from "../becca/entities/bbranch.js";
|
||||
import BNote from "../becca/entities/bnote.js";
|
||||
|
||||
|
||||
describe("Script", () => {
|
||||
let rootNote!: NoteBuilder;
|
||||
|
||||
beforeEach(() => {
|
||||
|
||||
becca.reset();
|
||||
|
||||
rootNote = new NoteBuilder(
|
||||
new BNote({
|
||||
noteId: "root",
|
||||
title: "root",
|
||||
type: "text"
|
||||
})
|
||||
);
|
||||
new BBranch({
|
||||
branchId: "none_root",
|
||||
noteId: "root",
|
||||
parentNoteId: "none",
|
||||
notePosition: 10
|
||||
});
|
||||
|
||||
vi.mock("./sql.js", () => {
|
||||
return {
|
||||
default: {
|
||||
transactional: (cb: Function) => {
|
||||
cb();
|
||||
},
|
||||
execute: () => {},
|
||||
replace: () => {},
|
||||
getMap: () => {}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("./sql_init.js", () => {
|
||||
return {
|
||||
dbReady: () => {
|
||||
console.log("Hello world");
|
||||
}
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
it("returns result from script", () => {
|
||||
cls.init(() => {
|
||||
const result = executeBundle({
|
||||
script: `return "world";`,
|
||||
html: "",
|
||||
});
|
||||
expect(result).toBe("world");
|
||||
});
|
||||
});
|
||||
|
||||
describe("dayjs", () => {
|
||||
const scriptNote = note("dayjs", {
|
||||
type: "code",
|
||||
mime: "application/javascript;env=backend",
|
||||
});
|
||||
|
||||
it("dayjs is available", () => {
|
||||
cls.init(() => {
|
||||
const bundle = getScriptBundle(scriptNote.note, true, "backend", [], `return api.dayjs().format("YYYY-MM-DD");`);
|
||||
expect(bundle).toBeDefined();
|
||||
const result = executeBundle(bundle!);
|
||||
expect(result).toMatch(/^\d{4}-\d{2}-\d{2}$/);
|
||||
});
|
||||
});
|
||||
|
||||
it("dayjs is-same-or-before", () => {
|
||||
cls.init(() => {
|
||||
const bundle = getScriptBundle(scriptNote.note, true, "backend", [], `return api.dayjs("2023-10-01").isSameOrBefore(api.dayjs("2023-10-02"));`);
|
||||
expect(bundle).toBeDefined();
|
||||
const result = executeBundle(bundle!);
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
it("dayjs is-same-or-after", () => {
|
||||
cls.init(() => {
|
||||
const bundle = getScriptBundle(scriptNote.note, true, "backend", [], `return api.dayjs("2023-10-02").isSameOrAfter(api.dayjs("2023-10-01"));`);
|
||||
expect(bundle).toBeDefined();
|
||||
const result = executeBundle(bundle!);
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
it("dayjs is-between", () => {
|
||||
cls.init(() => {
|
||||
const bundle = getScriptBundle(scriptNote.note, true, "backend", [], `return api.dayjs("2023-10-02").isBetween(api.dayjs("2023-10-01"), api.dayjs("2023-10-03"));`);
|
||||
expect(bundle).toBeDefined();
|
||||
const result = executeBundle(bundle!);
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
// advanced format
|
||||
it("dayjs advanced format", () => {
|
||||
cls.init(() => {
|
||||
const bundle = getScriptBundle(scriptNote.note, true, "backend", [], `return api.dayjs("2023-10-01").format("Q");`);
|
||||
expect(bundle).toBeDefined();
|
||||
const result = executeBundle(bundle!);
|
||||
expect(result).not.toBe("Q");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -39,7 +39,7 @@ function executeNoteNoException(note: BNote, apiParams: ApiParams) {
|
||||
}
|
||||
}
|
||||
|
||||
function executeBundle(bundle: Bundle, apiParams: ApiParams = {}) {
|
||||
export function executeBundle(bundle: Bundle, apiParams: ApiParams = {}) {
|
||||
if (!apiParams.startNote) {
|
||||
// this is the default case, the only exception is when we want to preserve frontend startNote
|
||||
apiParams.startNote = bundle.note;
|
||||
@@ -140,7 +140,7 @@ function getScriptBundleForFrontend(note: BNote, script?: string, params?: Scrip
|
||||
return bundle;
|
||||
}
|
||||
|
||||
function getScriptBundle(note: BNote, root: boolean = true, scriptEnv: string | null = null, includedNoteIds: string[] = [], overrideContent: string | null = null): Bundle | undefined {
|
||||
export function getScriptBundle(note: BNote, root: boolean = true, scriptEnv: string | null = null, includedNoteIds: string[] = [], overrideContent: string | null = null): Bundle | undefined {
|
||||
if (!note.isContentAvailable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -117,11 +117,11 @@ export const downloadMatrix: DownloadMatrix = {
|
||||
},
|
||||
tarX64: {
|
||||
name: "x86 (.tar.xz)",
|
||||
url: `https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNextNotes-Server-v${version}-linux-x64.tar.xz`
|
||||
url: `https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNotes-Server-v${version}-linux-x64.tar.xz`
|
||||
},
|
||||
tarArm64: {
|
||||
name: "ARM (.tar.xz)",
|
||||
url: `https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNextNotes-Server-v${version}-linux-arm64.tar.xz`
|
||||
url: `https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNotes-Server-v${version}-linux-arm64.tar.xz`
|
||||
},
|
||||
nixos: {
|
||||
name: "NixOS module",
|
||||
@@ -150,7 +150,7 @@ export const downloadMatrix: DownloadMatrix = {
|
||||
export function buildDownloadUrl(app: App, platform: Platform, format: string, architecture: Architecture): string {
|
||||
if (app === "desktop") {
|
||||
return downloadMatrix.desktop[platform]?.downloads[format].url ??
|
||||
`https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNextNotes-v${version}-${platform}-${architecture}.${format}`;
|
||||
`https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNotes-v${version}-${platform}-${architecture}.${format}`;
|
||||
} else if (app === "server") {
|
||||
return downloadMatrix.server[platform]?.downloads[format].url ?? "#";
|
||||
} else {
|
||||
|
||||
@@ -4,7 +4,7 @@ On Ubuntu:
|
||||
```
|
||||
#!/usr/bin/env bash
|
||||
|
||||
name=TriliumNextNotes-linux-x64-nightly.deb
|
||||
name=TriliumNotes-linux-x64-nightly.deb
|
||||
rm -f $name*
|
||||
wget https://github.com/TriliumNext/Notes/releases/download/nightly/$name
|
||||
sudo apt-get install ./$name
|
||||
|
||||
@@ -4,8 +4,8 @@ This is essentially Trilium sources + node modules + node.js runtime packaged in
|
||||
## Steps
|
||||
|
||||
* SSH into your server
|
||||
* use `wget` (or `curl`) to download latest `TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz` (copy link from [release page](https://github.com/TriliumNext/Notes/releases), notice `-Server` suffix) on your server.
|
||||
* unpack the archive, e.g. using `tar -xf -d TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz`
|
||||
* use `wget` (or `curl`) to download latest `TriliumNotes-Server-[VERSION]-linux-x64.tar.xz` (copy link from [release page](https://github.com/TriliumNext/Notes/releases), notice `-Server` suffix) on your server.
|
||||
* unpack the archive, e.g. using `tar -xf -d TriliumNotes-Server-[VERSION]-linux-x64.tar.xz`
|
||||
* `cd trilium-linux-x64-server`
|
||||
* `./trilium.sh`
|
||||
* you can open the browser and open http://\[your-server-hostname\]:8080 and you should see Trilium initialization page
|
||||
@@ -20,7 +20,7 @@ The problem with above steps is that once you close the SSH connection, the Tril
|
||||
* After downloading, extract and move Trilium:
|
||||
|
||||
```
|
||||
tar -xvf TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz
|
||||
tar -xvf TriliumNotes-Server-[VERSION]-linux-x64.tar.xz
|
||||
sudo mv trilium-linux-x64-server /opt/trilium
|
||||
```
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"@playwright/test": "^1.36.0",
|
||||
"@triliumnext/server": "workspace:*",
|
||||
"@types/express": "^5.0.0",
|
||||
"@types/node": "22.15.32",
|
||||
"@types/node": "22.15.33",
|
||||
"@vitest/coverage-v8": "^3.0.5",
|
||||
"@vitest/ui": "^3.0.0",
|
||||
"chalk": "5.4.1",
|
||||
@@ -80,7 +80,7 @@
|
||||
"url": "https://github.com/TriliumNext/Notes/issues"
|
||||
},
|
||||
"homepage": "https://github.com/TriliumNext/Notes#readme",
|
||||
"packageManager": "pnpm@10.12.2",
|
||||
"packageManager": "pnpm@10.12.4",
|
||||
"pnpm": {
|
||||
"patchedDependencies": {
|
||||
"@ckeditor/ckeditor5-mention": "patches/@ckeditor__ckeditor5-mention.patch",
|
||||
|
||||
@@ -32,14 +32,14 @@
|
||||
"ckeditor5-metadata.json"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.0.1",
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
|
||||
"@ckeditor/ckeditor5-inspector": ">=4.1.0",
|
||||
"@ckeditor/ckeditor5-package-tools": "^4.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "~8.35.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@vitest/browser": "^3.0.5",
|
||||
"@vitest/coverage-istanbul": "^3.0.5",
|
||||
"ckeditor5": "45.2.0",
|
||||
"ckeditor5": "45.2.1",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint-config-ckeditor5": ">=9.1.0",
|
||||
"http-server": "^14.1.0",
|
||||
@@ -53,7 +53,7 @@
|
||||
"webdriverio": "^9.0.7"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ckeditor5": "45.2.0"
|
||||
"ckeditor5": "45.2.1"
|
||||
},
|
||||
"author": "Elian Doran <contact@eliandoran.me>",
|
||||
"license": "GPL-2.0-or-later",
|
||||
|
||||
@@ -33,14 +33,14 @@
|
||||
"ckeditor5-metadata.json"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.0.1",
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
|
||||
"@ckeditor/ckeditor5-inspector": ">=4.1.0",
|
||||
"@ckeditor/ckeditor5-package-tools": "^4.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "~8.35.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@vitest/browser": "^3.0.5",
|
||||
"@vitest/coverage-istanbul": "^3.0.5",
|
||||
"ckeditor5": "45.2.0",
|
||||
"ckeditor5": "45.2.1",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint-config-ckeditor5": ">=9.1.0",
|
||||
"http-server": "^14.1.0",
|
||||
@@ -54,7 +54,7 @@
|
||||
"webdriverio": "^9.0.7"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ckeditor5": "45.2.0"
|
||||
"ckeditor5": "45.2.1"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "node ./scripts/build-dist.mjs",
|
||||
|
||||
@@ -35,14 +35,14 @@
|
||||
"ckeditor5-metadata.json"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.0.1",
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
|
||||
"@ckeditor/ckeditor5-inspector": ">=4.1.0",
|
||||
"@ckeditor/ckeditor5-package-tools": "^4.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "~8.35.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@vitest/browser": "^3.0.5",
|
||||
"@vitest/coverage-istanbul": "^3.0.5",
|
||||
"ckeditor5": "45.2.0",
|
||||
"ckeditor5": "45.2.1",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint-config-ckeditor5": ">=9.1.0",
|
||||
"http-server": "^14.1.0",
|
||||
@@ -56,7 +56,7 @@
|
||||
"webdriverio": "^9.0.7"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ckeditor5": "45.2.0"
|
||||
"ckeditor5": "45.2.1"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "node ./scripts/build-dist.mjs",
|
||||
|
||||
@@ -35,15 +35,15 @@
|
||||
"ckeditor5-metadata.json"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.0.1",
|
||||
"@ckeditor/ckeditor5-dev-utils": "43.0.1",
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
|
||||
"@ckeditor/ckeditor5-dev-utils": "43.1.0",
|
||||
"@ckeditor/ckeditor5-inspector": ">=4.1.0",
|
||||
"@ckeditor/ckeditor5-package-tools": "^4.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "~8.35.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@vitest/browser": "^3.0.5",
|
||||
"@vitest/coverage-istanbul": "^3.0.5",
|
||||
"ckeditor5": "45.2.0",
|
||||
"ckeditor5": "45.2.1",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint-config-ckeditor5": ">=9.1.0",
|
||||
"http-server": "^14.1.0",
|
||||
@@ -57,7 +57,7 @@
|
||||
"webdriverio": "^9.0.7"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ckeditor5": "45.2.0"
|
||||
"ckeditor5": "45.2.1"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "node ./scripts/build-dist.mjs",
|
||||
@@ -90,6 +90,6 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@ckeditor/ckeditor5-icons": "45.2.0"
|
||||
"@ckeditor/ckeditor5-icons": "45.2.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,14 +35,14 @@
|
||||
"ckeditor5-metadata.json"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.0.1",
|
||||
"@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
|
||||
"@ckeditor/ckeditor5-inspector": ">=4.1.0",
|
||||
"@ckeditor/ckeditor5-package-tools": "^4.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "~8.35.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@vitest/browser": "^3.0.5",
|
||||
"@vitest/coverage-istanbul": "^3.0.5",
|
||||
"ckeditor5": "45.2.0",
|
||||
"ckeditor5": "45.2.1",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint-config-ckeditor5": ">=9.1.0",
|
||||
"http-server": "^14.1.0",
|
||||
@@ -56,7 +56,7 @@
|
||||
"webdriverio": "^9.0.7"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ckeditor5": "45.2.0"
|
||||
"ckeditor5": "45.2.1"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "node ./scripts/build-dist.mjs",
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
"@triliumnext/ckeditor5-keyboard-marker": "workspace:*",
|
||||
"@triliumnext/ckeditor5-math": "workspace:*",
|
||||
"@triliumnext/ckeditor5-mermaid": "workspace:*",
|
||||
"ckeditor5": "45.2.0",
|
||||
"ckeditor5-premium-features": "45.2.0"
|
||||
"ckeditor5": "45.2.1",
|
||||
"ckeditor5-premium-features": "45.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jquery": "3.5.32"
|
||||
|
||||
2340
pnpm-lock.yaml
generated
2340
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,14 @@
|
||||
{
|
||||
"matchPackageNames": "**-config-ckeditor5",
|
||||
"groupName": "ckeditor5 config packages"
|
||||
},
|
||||
{
|
||||
"matchPackageNames": [
|
||||
"@ckeditor/**",
|
||||
"ckeditor5",
|
||||
"ckeditor5-premium-features"
|
||||
],
|
||||
"groupName": "ckeditor monorepo"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user